Javascript 06 基本类型、引用类型

基本类型、引用类型

  • 基本类型值(数值、布尔值、字符串、null和undefined):指的是保存在栈内存中的简单数据段;
  • 引用类型值(对象、数组、函数、正则):指的是那些保存在堆内存中的对象,变量中保存的实际上只是一个指针,这个指针执行内存中的另一个位置,由该位置保存对象
    var a;
    var b;
    var obj;
    var obj2;


    a = 1;
    b = 2;

    var obj = {
        name: 'ruoyu',
        sex: 'male',
        age: 30,
        friend: {
            name: 'hello', 
            age: 100
        }
    }

    var newObj = {};



    b = a;
    console.log(b);

    var obj2 = obj;


    var obj3 = {name: 'hello'};
    var obj4 = {name: 'hello'};
    obj3 === obj4



    function sum(){
        console.log('sum...')
    }
    var sum2 = sum;
    sum2()

函数的参数传递

function inc(n){
    n++;
}
var a = 10;
inc(a);
console.log(a);

function incObj(obj){
    //var obj = o //0x0001
    obj.n++;
}

var o = {n: 10};  //o = 0x0001
incObj(o);
console.log(o);


function squireArr( arr ){
    //var arr = 0x0011
    for(var i = 0; i < arr.length; i++){
        arr[i] = arr[i] * arr[i];
    }
}
function squireArr2( arr ){
    var newArr = [];
    for(var i = 0; i < arr.length; i++){
        newArr[i] = arr[i] * arr[i];
    }
    return newArr;
}

var arr = [2,1,3,6]; //arr  0x0011
squireArr(arr);
console.log(arr); // [4,1,9,36]

var arr2 = squireArr2(arr)
console.log(arr2);

对象浅拷贝和深拷贝

//浅拷贝

    function shallowCopy(oldObj) {
        var newObj = {};
        for(var i in oldObj) {
            if(oldObj.hasOwnProperty(i)) {
                newObj[i] = oldObj[i];
            }
        }
        return newObj;
    }

//深拷贝

    function deepCopy(oldObj) {
        var newObj = {};
        for(var key in oldObj) {
            if(typeof oldObj[key] === 'object') {
                newObj[key] = deepCopy(oldObj[key]);
            }else{
                newObj[key] = oldObj[key];
            }
        }
        return newObj;
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,161评论 1 32
  • 1.C和C++的区别?C++的特性?面向对象编程的好处? 答:c++在c的基础上增添类,C是一个结构化语言,它的重...
    杰伦哎呦哎呦阅读 9,736评论 0 45
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,690评论 8 265
  • 有时候我们只是有自己对世界的看法 有时候我们只是保留了自己的执念 有时候我们只是想做那一股清流 有时候我们只是想做...
    昵人阅读 113评论 1 2
  • 越是深刻的沉痛越隐藏在平静之中。 毋庸置疑《海边的曼切斯特》是一部精彩的影片。他的精彩之处在于娓娓道来一个失败的平...
    小飞侠303阅读 470评论 1 4