分配给窗口属性的函数是否仍然可以访问局部变量?
Does a function assigned to a window property still have access to local variables?
问题:当在窗口上声明函数时,该函数是否仍然可以访问局部变量?
(function(){
var foo = "poo"; //local var
window.bar = function(){
alert(foo);
}
})();
bar();
我在jsfiddle中测试了这个,它可以工作,但是我的IDE建议它不应该。想法吗?最佳实践评论?
http://jsfiddle.net/nRT6B/1/作为参考,我在全局声明函数,因为Flash回退- Flash不能引用我的自关闭函数
您的函数未在window
中定义。它在匿名包装器函数中定义,然后分配给window中的属性。
函数可以访问定义它们的同一作用域内的任何变量,与它们被赋值给哪个对象或赋值多少次无关。一个函数可以被分配给数百个不同的对象,但这不会改变它的工作方式,除非你把它分配给一个对象的原型,然后通过对象的实例调用它。但这只是因为调用它们的特殊方式,使它们的上下文(this
对象)成为当前对象调用者。事实上,这个
var a = new Array();
a.push(1);
等价于
var a = new Array();
Array.prototype.push.call(a, 1);
相关文章:
- jQuery.ajax()访问javascript循环中的beforeEnd局部变量
- 创建所有原型函数均可访问的局部变量
- 局部变量仍可通过函数访问
- 使用原型访问局部变量
- 全局访问的 JavaScript 函数局部变量
- 从另一个函数访问局部变量
- 实例化后可从方法访问的 Javascript 局部变量
- 访问在另一个文件中定义的局部变量
- 为什么全局变量无法访问,即使稍后在代码中定义了局部变量
- 访问函数外部的局部变量
- 是否可以从函数外部访问函数的局部变量
- 在 Javascript 中创建一个可以访问局部变量的类
- 从回调函数访问局部变量
- 访问子窗口中的父局部变量
- 访问angularjs控制器中的局部变量
- 是否可以从函数外部访问函数的局部变量
- Javascript:如何在回调函数中访问局部变量
- 在JavaScript中更改函数上下文(用于访问局部变量)
- 如何在 JavaScript 中的函数外部访问局部变量
- 分配给窗口属性的函数是否仍然可以访问局部变量?