通常,函数内声明的变量(变量声明)只能由该函数访问。它的内部函数。但是,函数内的Undeclared赋值是通过使其成为全局变量在 JavaScript 中的函数Scope之外访问的。为什么会这样?
var hello = function() {
number = 45;
};
hello();
console.log(number); // 45 is printed in the console
答案 0 :(得分:1)
对var
声明中未出现的变量的赋值被视为全局变量的赋值(全局上下文的属性)。在“严格”模式下,此类分配会引发错误。
这就是JavaScript的工作原理。如果number
被正确声明,那么它将无法全局显示:
var hello = function() {
var number = 45;
}
hello();
console.log(number); // undefined is printed in the console
答案 1 :(得分:1)
因为规范是这样说的。
将"use strict";
添加到文件或功能的顶部以禁止此操作。