【问题标题】:js - var defined twicejs - var 定义了两次
【发布时间】:2018-07-23 01:40:45
【问题描述】:

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

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

【问题讨论】:

  • add_t 中,您定义了一个新的单独的local 变量,它恰好与外部变量同名。 (不要像这样隐藏变量,这会令人困惑)
  • 这是一个中期问题,这就是重点!谢谢你
  • 这是 JS 编程的 abc 类型问题。因此,进行一些研究,然后在 stackoverflow 等社区中提出问题。

标签: javascript var


【解决方案1】:

第二个声明在add_t 的范围内声明sum,并且只存在于那些括号内(它在那里被声明为一个完全不同的变量,然后从不使用)。如果你有这样的事情(没有在函数内声明一个同名的新变量)

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    • 2016-07-23
    • 2012-09-13
    • 2014-08-24
    • 2013-07-14
    • 1970-01-01
    相关资源
    最近更新 更多