在JavaScript中,在函数范围之外访问未声明的变量赋值?

时间:2016-02-21 14:43:24

标签: javascript variables scope

通常,函数内声明的变量(变量声明)只能由该函数访问。它的内部函数。但是,函数内的Undeclared赋值是通过使其成为全局变量在 JavaScript 中的函数Scope之外访问的。为什么会这样?

var hello = function() {
   number = 45;
};
hello();
console.log(number);    // 45 is printed in the console

2 个答案:

答案 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";添加到文件或功能的顶部以禁止此操作。