第4章 变量、作用域和内存问题

基本类型

赋值是建立副本,两个变量值并无关联
Undefined
Null
Boolean
Number
String

引用类型

赋值变量是引用同一个对象,改变其值是改变引用对象的值
引用类型可以动态建立、修改、删除其属性和方法

参数

函数参数是函数的局部变量,按基本类型传递值,实际是建立副本,传递后在函数内部改变,不会影响外部变量的值。

检测类型

alert ( typeof a ); 检测基本类型,引用类型返回object (Safari 5和 Chrome7之前版本正则表达式返回function)
alert ( person instanceof Object );//变量是Object 吗? 用来检测引用类型

执行环境

执行环境定义了变量或函数有权访问其他数据,决定了它们各自的行为。

var color = "blue";
function changeColor () {
  var anotherColor = "red";
  function swapColor () {
    var tempColor = anotherColor;
    anotherColor = color;
    color = tempColor;
    //这里可以访问 Color、anotherColor 和 tempColor
  }
 //这里只可以访问 Color、anotherColor 
}
 //这里只可以访问 Color
changeColor();

延长作用域链

try-catch语句的catch
with语句

没有块级作用域

{ }是不能建立作用域的,特别注意 if for中声明的var i 的作用域。

你可能感兴趣的:(第4章 变量、作用域和内存问题)