js-var定义两次

时间:2018-07-23 01:40:45

标签: javascript var

我试图弄清楚为什么这段代码给出21而不是26?我的想法是,当调用add_t()时,sum的值更改为25。同时,我不确定它是var的事实是否会影响答案

var sum = 20;
function add_t() {
  var sum = 25;
}
add_t();
console.log(sum+1);

1 个答案:

答案 0 :(得分:1)

第二个声明在sum范围内声明add_t,并且仅存在于这些括号内(在那里被声明为完全不同的变量,因此从不使用)。如果您有这样的事情(在函数内未声明相同名称的新变量)

var sum = 20;
function add_t() {
  sum = 25;
}
add_t();
console.log(sum+1);

然后您将在控制台中得到26,因为它将在外部范围中引用sum