美文网首页
JavaScript 入门(三、JavaScript 基本数据

JavaScript 入门(三、JavaScript 基本数据

作者: 码上行动 | 来源:发表于2022-05-26 20:26 被阅读0次

    一、常见的基本数据类型:number、boolean、string、undefined、 null

    1、.基本类型的变量是存放在栈内存的。不拥有属性和方法,访问是按值访问的,基本类型的值是不可变得
    例如:

    var a = 1;
    var b = a;
    console.log(a == b);//true
    console.log(a === b);//true
    

    改变a的值

    a = 2;
    console.log(a == b);//false
    console.log(a === b);//false
    

    一旦改变a将不再等于b

    2、基本类型的复制就是在栈内存中开辟出了一个新的存储区域用来存储新的变量,这个变量有它自己的值,只不过和前面的值一样,所以如果其中一个的值改变,则不会影响到另一个。

    例如:

    var $a = 'hello';
    var $b = $a;
    console.log($a);//hello
    console.log($b);//hello
    

    改变a的值

    $a = 'world';
    console.log($a);//world
    console.log($b);//hello
    

    二、常见的引用类型:array、object、function…
    1、引用类型的值是保存在堆内存中的,引用类型值是可变的
    例如

     var obj = {}; // obj保存了一个空对象的实例
    var $obj = obj;  // obj和$obj都指向了这个空对象
    console.log(obj== $obj);// true
    console.log(obj=== $obj);// true
    
    

    分别改变obj和$obj

    obj .name = 'xiaoming';
    console.log(obj .name); // 'xiaoming'
    console.log($obj .name); // 'xiaoming'
    
    $obj.age = 18;
    console.log($obj.age);// 18
    console.log(obj.age);// 18
    
    console.log(obj== $obj);// true
    console.log(obj=== $obj);// true
    

    obj依旧等于$obj

    总结:上述obj,$obj为对象。是引用类型。a保存的只是指向它在堆内存中地址的指针,它的副本b也是指向同一个堆内存的地址的指针。所以它们改变的是同一个指向堆内存中的对象。

    深拷贝和浅拷贝

    在引用类型中,a赋值给b,即相当于a复制了一份给b,但它们实际上都是操作同一个堆内存中的对象,这种拷贝称为浅拷贝。如果要使a,b互不影响,那么这种复制称为深拷贝,欲了解请看深拷贝与浅拷贝篇。

    相关文章

      网友评论

          本文标题:JavaScript 入门(三、JavaScript 基本数据

          本文链接:https://www.haomeiwen.com/subject/nekpprtx.html