美文网首页
任务19 时间对象、引用类型-简答题

任务19 时间对象、引用类型-简答题

作者: GarenWang | 来源:发表于2016-11-14 16:54 被阅读0次

    1.基础类型有哪些?复杂类型有哪些?有什么特征?

    -基本类型值:指的是保存在栈内存中的简单数据段,有数值、布尔值、null、undefined.

      var a=1;
      var b=a;
      var a=2;
      console.log(a)//2
      console.log(b)//1
    
    • 复杂类型值:指的是那些保存在堆内存中的对象,变量中保存的实际上只是一个指针,这个指针执行内存中的另一个位置,由该位置保存对象,有对象、数值、函数、正则

      var obj1={name:"hunger"};
      var obj2=obj1;
      obj1.name="mary";
      console.log(obj1);//{name:"mary"}
      console.log(obj2);//{name:"mary"},obj2也发生了变化
      
    • 由于存储数据的位置不同,也导致二者有不同的特征,这就必须了解堆和栈的区别,堆适用于存储对象实例,和类信息的,其中的数据可以为多线程共享,里面的数据存在时间视对象与类的存在时间而定,栈是方法执行区,里面存储的是局部变量和方法运行时栈帧,里面的数据是私有的,不共享的,且随着方法的结束而销毁。

    1.png

    2.如下代码的输出? 为什么?

        var obj1 = {a:1, b:2};
        var obj2 = {a:1, b:2};
        console.log(obj1 == obj2);//输出false,因为obj1和obj2虽然值一样,但是两个不同的对象,指针的地址不一样
        console.log(obj1 = obj2);//此时把obj2的值和地址赋值给为obj1,此时对象obj1和obj2共享一个指针地址
        console.log(obj1 == obj2);//输出true,因为二者的指针地址相同,指向一个共同的储存堆区。

    相关文章

      网友评论

          本文标题:任务19 时间对象、引用类型-简答题

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