变量、作用域和内存
变量
1变量——松散类型
基本类型值——简单的数据段
引用类型值——保存在内存中的对象
创建变量并赋值,添加属性与方法
var count=10; //基本类型值 var person=new Object(); //引用类型值 person.name="Nicholas"; //添加属性与方法 person.age=25; person.sayName()=function(){ alert(this.name); };
2复制变量值
基本类型值——在变量对象上创建一个新值,然后把该值复制到新变量分配的位置上
var num1=5; var num2=num1;
alert(num1); //5 alert(num2); //5
引用类型值——两个变量实际上将引用同一个对象
var obj1=new Object(); var obj2=obj1; obj1.name="Nicholas"; alert(obj2.name); //"Nicolas"
3传递参数——按值传递
基本类型
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"; obj=new Object(); //重写obj obj.name="Greg"; } var person=new Object(); setName(perosn); alert(person.name); //"Nicholas"
可以将函数的参数想象成局部变量,按值传递
4检测类型
基本类型——typeof操作符
引用类型——instanceof操作符
执行环境及作用域
执行环境——定义了变量或函数有权访问的其他数据,决定了它们各自的行为
变量对象——环境定义的所有变量和函数都保存在这个对象中
作用域链
JavaScript无块级作用域
垃圾收集
标记清除
引用计数
管理内存——解除引用