0

function scoped() {
  var a = 150;
  let b = 300;
  const c = 500;
}

a = 300; // Why is it possible to access a function scoped variable?
b = 600; // Same as above
c = 1000; // Same as above and also why I can change value of constant?

console.log(a); // Return: 300 - Why it works?
console.log(b); // Return: 600 - Why it works?
console.log(c); // Return: 1000 - Why it works?

我的问题:

  1. 为什么可以(在非严格模式下)访问函数作用域变量?这不应该被允许吗?

  2. 为什么我什至可以更改常量的值?

  3. 在这种特定情况下,示波器或吊装如何在幕后工作?

4

1 回答 1

0

“var” 关键字在 JS 中创建全局范围变量而不是块范围变量。表示函数内部的“a”,它外部或(在全局范围内)相同的“a”。

“const,let”关键字创建了一个“块作用域”变量,这意味着函数内部的 b,c 与外部的 b,c 不同。有两个 b,c 变量 1- 在函数内部 2- 在全局范围内(函数外部)。

对不起我的英语,我希望你清楚。

于 2021-02-19T20:44:09.363 回答