访问外部作用域中的变量?
(function () {
var x = 1;
return {
f: function (x) {
alert(x);
}
};
}()).f(2);
假设我不想重命名这两个变量。没有办法从 f
内部访问首先声明的变量 x
- 对吗?
(function () {
var x = 1;
return {
f: function (x) {
alert(x);
}
};
}()).f(2);
Suppose I don't want to rename either variable. There is no way to, from within f
, access the variable x
, which was declared first - right?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
正确的。由于
function (x)
中有不同的x
,因此任何访问x
的尝试都将获得该值(最近的作用域)。它会阻止对更广泛范围内的任何x
的访问。Correct. Because you have a different
x
infunction (x)
, any attempt to accessx
will get that one (the nearest scope). It blocks access to anyx
in a wider scope.这允许您同时使用 x (1) 和 x (2)。
This allows you to use both x (1) and x (2) at the same time.
您可以使用以下函数返回变量:
You could return the variable with the function:
不,没有。内部作用域
x
隐藏外部作用域x
。当然,你不能有一个名为“local”的内部变量。 ;-)
No, there is not. The inner scope
x
hides the outer scopex
.You can't have an inner variable called "local", of course. ;-)
意识到隐式异步调用使您认为无法从外部范围访问变量:
Aware of implicit async calls which make you think that you can't access of variable from outer scope: