功能是否阻止范围?

时间:2018-05-21 18:34:54

标签: javascript

let phrase = "Hello";

if (true) {
  let user = "John";

  function sayHi() {
    alert(`${phrase}, ${user}`);
  }
}

sayHi();

当我运行代码时,它会输出Hello John但是根据此站点https://javascript.info/task/function-in-if 它显示输出应该是一个错误。这是因为sayHi函数在内部声明了吗?有人可以解释什么应该是输出和为什么???

1 个答案:

答案 0 :(得分:-3)

javascript.info网站上的信息不正确。函数声明(与使用var的声明一样)是函数作用域,而不是块作用域。

但是,使用constlet的声明是块作用域是正确的。