JavaScript作用域及变量作用域

作用域链: 由于JavaScript的变量都是对象的属性,而该对象可能又是其他对象的属性,而所有对象都是window对象的属性,所以这些对象的关系可以看作是一条链,链头就是变量所处的对象,链尾就是window对象。

function t() { var a; function t2(){ var b;} }

JavaScript中函数也是对象,所以变量a所在的对象t,t又在window对象中。

所以a的作用域链:       t —>window

       b的作用域链:       t2—>t—>window


1.JavaScript没有var的变量都为全局变量,且为window对象的属性。

JavaScript作用域及变量作用域_第1张图片

2.函数内(函数内的函数除外)定义的变量在整个函数内部都有效。

JavaScript作用域及变量作用域_第2张图片

3.函数内部的变量取代全局同名变量。

JavaScript作用域及变量作用域_第3张图片

4.没有块的作用域。

JavaScript作用域及变量作用域_第4张图片

你可能感兴趣的:(JavaScript作用域及变量作用域)