JavaScript作用域

来源:互联网 发布:清华知乎 编辑:程序博客网 时间:2024/06/05 15:35

一. 作用域的概念

它是指对某一变量和方法具有访问权限的代码空间, 在JS中, 作用域是在函数中维护的.

表示变量或函数起作用的区域,指代了它们在什么样的上下文中执行,亦即上下文执行环境。Javascript的作用域只有两种:全局作用域和本地作用域,本地作用域是按照函数来区分的。

二、作用域的注意事项

1.js的作用域是有函数划分的,而不是块儿

这里写图片描述

2.所属于全局作用域的变量都是window对象的属性
上面例子中 第一行的 too就是等于 window.too
例如:

这里写图片描述

是不是很奇怪,上面例子中函数中的too是局部变量,在这里就是全局变量了
注意下两个例子的区别,一个通过显示声明 var too
一个隐示声明too=”test”;
也就是说没有显示定义的变量,它就是全局变量,虽然它可能只能在这个函数内使用。
三、作用域实例

1、

这里写图片描述

2、

这里写图片描述

3、

这里写图片描述

4、

这里写图片描述

5、

这里写图片描述

四、this指针作用域

在这里列出this在ECMAScript中的不同含义:

(1) 在全局执行环境中使用this,表示Global对象,在浏览器中就是window对象。

(2) 当在函数执行环境中使用this时,情况就有些复杂了。如果函数没有明显的作为非window对象的属性,而只是定义了函数,不管这个函数是不是定义在另 一个函数中,这个函数中的this仍然表示window对象。如果函数显示地作为一个非window对象的属性,那么函数中的this就代表这个对象。 (当然可以使用apply或者call函数来取代默认this的引用)

(3) 当通过new运算符来调用函数时,函数被当做一个构造函数,this指向构造函数创建出来的对象。

五、作用域链
可以被看作一种路径, 沿着这条路径可以确定变量的值.

六、作用域链的特点

(1) var关键字决定了哪个函数是变量的作用域链的终点;

(2) 当引用一个变量时, JS会沿着由对象执行路径构成的作用域链进行解析, 查找变量最近定义的值, 一旦找到, 即使用该值.

0 0