发表于: 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了!
明天计划的事情:
继续完成任务
问题:
一定要先想好再做,而不是死磕。
收获:
学会了番茄工作法学习
评论