理解和熟知概念JavaScript的作用域和块级作用域.doc
1、理解和熟知概念JavaScript的作用域和块级作用域理解和熟知概念JavaScript的作用域和块级作用域作用域永远都是任何一门编程语言中的重中之重,因为它控制着变量与参数的可见性与生命周期。讲到这里,首先理解两个概念:块级作用域与函数作用域。什么是块级作用域呢?任何一对花括号(和)中的语句集都属于一个块,在这之中定义的所有变量在代码块外都是不可见的,我们称之为块级作用域。函数作用域就好理解了(*_*) ,定义在函数中的参数和变量在函数外部是不可见的。大多数类C语言都拥有块级作用域,JS却没有。请看下文demo:/C语言 #includevoid main() int i=2; i-; if
2、(i) int j=3; printf(%d/n,j); 运行这段代码,会出现“use an undefined variable:j”的错误。可以看到,C语言拥有块级作用域,因为j是在if的语句块中定义的,因此,它在块外是无法访问的。而JS是如何表现的呢,再看另一个demo:functin test() for(var i=0;i3;i+) alert(i); test();运行这段代码,弹出3,可见,在块外,块中定义的变量i仍然是可以访问的。也就是说,JS并不支持块级作用域,它只支持函数作用域,而且在一个函数中的任何位置定义的变量在该函数中的任何地方都是可见的。那么我们该如何使JS拥有块级
3、作用域呢?是否还记得,在一个函数中定义的变量,当这个函数调用完后,变量会被销毁,我们是否可以用这个特性来模拟出JS的块级作用域呢?看下面这个DEMO:function test() (function () for(var i=0;i4;i+) )(); alert(i); test();这时候再次运行,会弹出i未定义的错误,哈哈,实现了吧这里,我们把for语句块放到了一个闭包之中,然后调用这个函数,当函数调用完毕,变量i自动销毁,因此,我们在块外便无法访问了。JS的闭包特性is the most important feature(*_*) 大家懂的)。在JS中,为了防止命名冲突,我们应该尽量避免使用全局变量和全局函数。那么,该如何避免呢
《理解和熟知概念JavaScript的作用域和块级作用域.doc》由会员分享,可在线阅读,更多相关《理解和熟知概念JavaScript的作用域和块级作用域.doc(3页范文模板文档)》请在优智文库上查找。
- 特殊限制:
-
部分文档作品中若含有的非商用素材,仅作为整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 理解 熟知 概念 JavaScript 作用