打卡时间:14:30
变量、作用域和内存问题
基本类型和引用类型的值
ECMAScript变量可能包含两种不同类型的值:
基本类型:指的是简单的数据段;
引用类型值:指那些可能由多个值构成的对象。
基本数据类型:Undefined、Null、Boolean、Number和String。这5种基本数据类型是按值防蚊的,因为可以操作保存在变量中的 实际的值。
引用类型的值是保存在内存中的对象。
动态的属性
定义基本类型值和引用类型值的方式是类似的:创建一个变量并为该变量赋值。对于引用类型的值,我们可以为其添加属性和方法,也可以改变和删除其属性和方法。例:
var person=new Object();
person.name="kathy";
alert(person.name);//kathy
//这段代码创建了一个对象并将其保存在了变量person中。如果对象不被销毁或者被不被删除,那么这个属性就一直存在
但是,我们不能给基本类型的值添加属性。例:
var name="Nicholas";
name.age=27;
alert(name.age);//undefined
这说明只能给引用类型值动态地添加属性,以便将来使用。
复制变量值
除了保存的方式不同之外,在从一个变量向另一个变量复制基本类型值和引用类型值时,也存在不同。
◆基本类型的值:从一个变量向另一个变量复制时,会在变量对象上创建一个新值,然后把该值复制到位新变量分配的位置上。例:
var num1=5;
var num2=num1;
//当使用num1的值来初始化num2时,num2也保存了值5.但是num1和num2中的5是完全独立的。因为,这个变量可以参与任何操作而不会相互影响。
◆引用类型的值:当一个变量向另一个变量复制时,同样也会将存储在变量对象中的值复制一份放在为新变量分配的空间中。不同的是,这个值的副本实际上是一个指针,这个指针指向存储在堆中的一个对象。复制操作结束后,两个变量实际上将引用同一个对象。因此,改变其中一个变量,就会影响另一个变量。

传递参数
ECMAScript中所有函数的参数都是按值传递的。
网友评论