函数作用域的JavaScript变量ACCESS在"非严格模式"上



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. 在这种特殊情况下,范围或吊装是如何在幕后工作的?

"const let"关键词创建"块作用域";变量,也就是说函数内部的(b,c)和函数外部的(b,c)不一样。有两个变量b,c 1-在函数内2-在全局作用域(函数外)。

很抱歉我的英语不好,希望你明白。

最新更新