【发布时间】:2017-10-14 08:06:51
【问题描述】:
我不认为我的问题与 How do I return the response from an asynchronous call? 重复
我看到,在其他语言(C#)中,声明了一个变量 在函数或循环中,当您退出函数或循环时,他们无法访问已在其他函数中声明的变量,但在 javascript 中可以。
$(document).ready(function () {
Text();
Tex2();
});
function Text() {
for (xxi = 0; xxi < 10; xxi++) {
console.log(xxi);
iix = 99;
}
console.log(xxi + iix);
Tex2();
}
function Tex2() {
console.log("What the hel:" + (xxi + iix));
}
结果是:
【问题讨论】:
-
iix = 99;没有声明......就好像你有window.iix = 99......并且任何对iix的引用就像window.iix......所以,它有效 - 学习更多,搜索 javascript 范围链 - 此外,Tex2 在 Tex1 的末尾被调用一次,然后在 document.ready 中再次调用 -
stackoverflow.com/questions/500431/… 很好地概括了 JavaScript 的作用域。
-
答案没有提到的一件事,@DocMax 就是为什么
iix在这种情况下是全局的 -
如果你声明一个没有关键字的变量,它就变成了一个全局变量。
a=1是全局的,但var a = 1或let a = 1不是。虽然,javascript 也使用范围链,但这不是这里的问题。 -
@Araymer - 范围链接可能与
iix和xxi对 Tex2 的“可见性”有关:p(我刚刚意识到 iix 和 xxi 都是全局的:p)
标签: javascript jquery