1.ECMAscript包含两种不同类型的值:基本类型值和引用类型值。基本类型值有5种:Undefined、Null、Boolean、String、Number。它们是按值访问的,可以操作保存在变量中的实际的值。而在操作对象时,访问的实际是变量的引用而不是实际的值,因此引用类型的值是按引用访问的。
2.只能给引用类型值动态地添加属性:
var name="zx";
name.age=19;
alert(name.age);//Undefined
3.复制基本类型的值时,会创建一个新值,然后分配给新变量。
复制引用类型的值时,两个变量实际上会引用同一个对象。
var obj1=new Object();
var obj2=obj1;
obj2.name="zx";
alert(obj1.name);//zx
4.ECMAscript中所有函数的参数都是按值传递的。
function setName(obj){
obj.name="zx";
obj=new Object();
obj.name="xz";
}
var person=new Object();
setName(person);
alert(person.name);//zx
5.检测类型。
var s="zx";
alert(typeof s);//String
var obj=new Object();
alert(obj instanceof Object);//true
6.没有块级作用域。
if(true){
var color="red";
}
alert(color);//red
在使用for循环时尤其要注意:
for(var i=0;i<10;i++){}
alrt(i);//10
如果初始化变量时没有使用var声明,则该变量会自动添加到全局环境中。在严格模式下,初始化未经声明的变量会导致错误。