在这篇文章中,我会试图讲解JavaScript变量的作用域和声明提升,以及许多隐隐藏的陷阱。为了确保我们不会碰到不可预见的问题,我们必须真正理解这些概念。 基本定义作用范围是个“木桶”,里面装着变量。变量可以是局部或者全局性的,但在子范围中定义的变量是可以访问父范围的,这一点可能会造成一些困扰。 在JavaScript中使用"var"关键字声明变量。一旦在父范围宣声明,就会作为各自子范围的一部分。即在本地范围内有效,但本地定义的变量不可在全局范围内访问。 让我们来看一个例子。执行下面的代码,你会发现,你能打印出全局范围定义的变量,而全局范围无法访问局部范围定义的变量。
作用域链(Scope Chain)如果你忘记使用“var”的关键字来定义局部变量,事情可能会变得非常糟糕。为什么会这样呢?因为JavaScript会首先在父作用域内搜索一个未定义的变量,然后再到全局范围进行搜索。在下面的例子中,JavaScript知道变量“a”是someFunction()的一个局部变量,在anotherFunction()中它会寻找它父作用域内的变量。
更复杂的情况是,在下面的例子中,一个变量没有在函数中进行作用域的限定。 在someFunction()中调用了一个没有在函数范围内定义的变量 a=2; 这个分配将覆盖全局变量的值。 后续引用将指向全局变量的值。
上一篇:最新的 jQuery 图片裁剪插件下一篇:JSON简介以及用法代码汇总
Powered by Discuz! X3.2 --© 20011-2015 南充北湖网络有限公司,all rights reserved 技术支持:北湖网络 Archiver | 手机版 | 小黑屋 | 南充北湖网络有限公司 ( 蜀ICP备14003946号 ) |