基本类型和引用类型(P68)
基本类型指的是简单的数据段,而引用类型指那些可能有多个值构成的对象(P68);
不能给基本类型的值添加属性,虽然这样做不会导致任何错误(P69);
从一个变量向另一个变量复制基本类型值和引用类型值时,基本类型的两个变量是相互独立的,而引用类型的两个变量则将引用同一个对象(P70);传递参数(P70)
JS中所有函数的参数都是按值传递的;
传递基本类型值的例子:function addTen(num){ num+=10; return num; } var count=20; var result=addTen(count); alert(count);//20、没有变化 alert(result);//30
使用对象传递参数,仅仅是复制了一个对象给参数,但参数和被传递的对象变量引用的是同一个变量(也就是说,即使对象是按值传递,被传递的参数也与对象变量共同引用一个对象,例子:
function setName(obj){ obj.name="Nicholas"; } var person =new Object(); setName(person); alert(person.name);//"Nicholas"
对象是按值传递的,在函数内重新声明obj对象时,这个变脸引用的就是一个局部对象了:
function setName(obj){ obj.name="Nicholas"; obj=new Object(); obj.name="Greg"; } var person=new Object(); setName(person); alert(person.name);//"Nicholas"
检测类型(P72)
typeof操作符适合检测基本数据类型,而instanceof操作符适合检测引用类型(对象)的值(类型);
没有块级作用域(P76)
作用域不会被花括号强制的限制住
age1: if(true){ var color="blue"; } alert(color);//"blue" age2: for(var i=0;i<10;i++){ doSomething(i); } alert(i);//10
解除引用(有助于回收内存,提高性能)(P81)
局部变量会在它们离开执行环境时自动被解除引用,全局变量则最好通过将其值设置为null来释放其引用
function createPerson(name){ var localPerson=new Object(); localPerson.name=name; return localPerson; } var globalPerson=createPerson("Nicholas"); alert(globalPerson.name); globalPerson=null;//手工解除globalPerson的引用