javascript模仿块级作用域
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript模仿块级作用域相关的知识,希望对你有一定的参考价值。
javascript没有块级作用域的概念,例如以下代码:
function outputNumbers(count){ for (var i=0; i < count; i++){ alert(i); } alert(i); //count }
不同于C、java语言,变量 i 在for循环外仍然能使用,变量 i 是定义在outputNumbers() 的活动对象中
匿名函数可以用来模仿块级作用域:
(function () { //这里是块级作用域 })();
以上代码定义了一个匿名函数并立即调用,相当于:
var someFunction=function(){ //这里是块级作用域 } someFunction()
用下面这里例子,说明匿名函数能模仿块级作用域的原理
var i = 1; (function() { var i = 2; console.log("内部:" + i); // 2 })(); console.log("外部:" + i); // 1
- 匿名函数执行过程中
全局变量 i 被屏蔽:先搜索匿名函数活动对象,因为匿名函数的活动对象里有变量 i ,不会去搜索全局变量对象中的变量 i
- 匿名函数执行完毕后
块内的资源会被释放:函数执行完毕后,局部活动对象会被销毁(这里是匿名函数的活动对象)
- 这种技术的好处
限制向全局作用域中添加过多的变量和函数
以上是关于javascript模仿块级作用域的主要内容,如果未能解决你的问题,请参考以下文章