码迷,mamicode.com
首页 > 编程语言 > 详细

javascript模仿块级作用域

时间:2017-07-09 12:35:30      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:number   全局   src   变量   blog   alert   width   output   作用   

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模仿块级作用域

标签:number   全局   src   变量   blog   alert   width   output   作用   

原文地址:http://www.cnblogs.com/candytong/p/7140717.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!