我试图弄清楚为什么这段代码给出21而不是26?我的想法是,当调用add_t()
时,sum的值更改为25。同时,我不确定它是var
的事实是否会影响答案
var sum = 20;
function add_t() {
var sum = 25;
}
add_t();
console.log(sum+1);
答案 0 :(得分:1)
第二个声明在sum
范围内声明add_t
,并且仅存在于这些括号内(在那里被声明为完全不同的变量,因此从不使用)。如果您有这样的事情(在函数内未声明相同名称的新变量)
var sum = 20;
function add_t() {
sum = 25;
}
add_t();
console.log(sum+1);
然后您将在控制台中得到26,因为它将在外部范围中引用sum
。