我想知道在调用outerfunc之后回答的值是什么。特别感兴趣的是它背后的推理(例如,为什么innerfunc的返回值没有替换全局范围中存储在var x中的值?)谢谢!
var x = 10;
function outerfunc () {
x = 20;
function innerfunc () {
var x = x + 20;
return x;
}
innerfunc();
}
outerfunc();
var answer = x;
答案 0 :(得分:1)
为什么innerfunc的返回值没有替换全局范围中存储在var x中的值?
因为您在innerfunc中创建了一个名为x的新var。尝试从行var x = x + 20;
中删除var答案 1 :(得分:0)
当声明一个与全局变量同名的局部变量时,全局变量在该函数中变得不可见。
var x = 10;
function outerfunc () {
x = 20;
function innerfunc () {
var x = x + 20;
alert("value of x in innerFun " + x);
}
innerfunc();
}
outerfunc();
alert("global value of x is " + x);
见这个
{{1}}