发表于: 2017-04-29 23:18:43

1 939


今天完成的事情:

       关于基本类型值和引用类型值的问题:

       在js的变量中,有俩种类型的值:基本类型和引用类型的值。基本类型值(也有人称为值类型)是简单地数据段,它是按值访问的,并对其中的值进行操作。而引用类型值值那些有可能有多个值构成的对象。赋值的时候,解释器必须确定值是基本类型还是引用类型。

       基本数据类型有:Undefined、Null、Boolean、Number、String。引用类型是保存在内存中的对象,即Object,对象是方法和属性结合。

       1.基本类型:

       设置var a="dog";

       a.age=22;

       console.log(a.age)

       将一个字符串"dog",保存在一个a'变量中,然后也给它添加了一个属性age,并赋值22,然后输出,像我以前想的那么该输出22,但实际情况是undefined。理解为基本类型的值是不可变的,而引用类型是可以动态改变的。

        2.复制变量值

        var num1=5;

        var num2=num1; //5

        num1+=1; //6

        num2; //5

        从一个变量向另一个变量复制基本类型的值,会在变量对象上重新创建一个新值,然后把该值复制到新变量分配的位置上。这俩个值是完全对立的,对俩个变量进行其他操作是互不影响的。它们应该是保存在栈内存中。复制后的变量对象num1=5,num2=5,num1!=num2

        3.引用类型:

var num1=document.getElementById("numa");
var num2=document.getElementById("numb");
num1.value=num2.value;
num2.value=num1.value;

       当从一个变量想另一个变量复制引用类型的的值时,也会将该值复制一份放到新的空间中。引用类型的存储要栈内存和堆内存一起完成,这个值实际上是一个指针,而这个指针指向存储在堆中的一个对象。复制操作结束后,俩个变量实际上是同一个指针,也就是引用同一个对象。所以,改变其中的一个变量,另一个变量也会随之改变。

      一开始,取到num1的value,复制给num2,然后以改变num2期望改变num1的value。但num1的value(可以看成一个变量)就是一个基本类型,复制后,它俩完全独立了,互不影响。再将value拿出来,先将numb(对象)复制给numa,然后给num2添加value属性,并赋值,此时俩个指向同一个对象,改变一个,也会影响另外一个。这个时候num1==num2了!

         

明天计划的事情:

       继续完成任务


问题:

       一定要先想好再做,而不是死磕。


收获:

       学会了番茄工作法学习


返回列表 返回列表
评论

    分享到