【发布时间】:2023-04-05 12:13:01
【问题描述】:
我已经阅读了很多关于闭包的文章,并且我经常使用它们,但是我发现了一个我不理解的案例。 为什么我传递给测试的函数无法访问 hello 变量?它不应该在查看范围更改时找到它吗? 我的代码:
(function($){
var hello="hello world"
$.test=function(a){
alert(hello+" 1")
a()}
})(this)
test(function(){alert(hello+" 2")})
【问题讨论】:
-
您似乎期望的是动态作用域(从调用者继承),但 Javascript 具有词法作用域(按书面形式继承)。跨度>
-
请不要在标题中添加“已解决”,答案上的绿色勾号表示您找到了解决方案
-
抱歉,我用的是屏幕阅读器,不知道
标签: javascript function scope closures