为什么我可以引用Javascript中尚未定义的变量

Why can I reference a variable not yet defined in Javascript?

本文关键字:未定义 变量 我可以 引用 Javascript 为什么      更新时间:2023-09-26

在这里创建函数foo时,我引用了一个尚未声明的变量fromTheFuture。这个实际上按预期运行,但为什么?这被认为是危险的还是糟糕的做法?

var foo = function(x) {
  return fromTheFuture * x;
};
var fromTheFuture = 5;
console.log(foo(10));

不过,如果您有几个函数想要以循环的方式相互使用,而不必在方法的开头用var来声明它们,我可以看到这非常方便。

调用foo时,已定义fromTheFuture。更准确地说,由于吊装,您的代码本质上是:

var foo, fromTheFuture;
foo = function(x) {return fromTheFuture*x;};
fromTheFuture = 5;
console.log(foo(10));

如果在fromTheFuture=5之前调用foo(10),则会得到NaN

是的,整个脚本被处理首先,变量被添加到"数据存储"中,然后才执行。

然而,这是不鼓励的,因为它使代码难以阅读。如果您想了解更多关于javascript代码质量的信息,请查看jslint。这是一种FxCop for js。试着把你的代码复制粘贴到那里。

它在javascript中的原因是,它首先定义所有变量,然后开始初始化,然后如果在某个地方需要初始化点,它会尝试初始化,称为第一个