闭包中定义的var变量作用域?

考虑一下这个闭包

function makeFunc() {
    var name = "Mozilla";
    function displayName() {
        alert(name);
    }
    return displayName;
}

var myFunc = makeFunc();
myFunc();

name这个变量是用var定义的

那么按照var的规则,name会被定义在全局的window下

这样的话闭包是不是冲突了呢?

阅读 2.7k
2 个回答

那么按照 var 的规则,name 会被定义在全局的 window

这个规则是哪里来的

在函数中是不会的

你说的不是var定义的变量,应该是this定义的变量在你目前的调用方式会定义到window上。
function内定义的var只有function内部可以访问

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题