在此处创建函数foo
时,我引用尚未声明的变量fromTheFuture
。 实际上可以正常运行,但是为什么?这被认为是危险的还是不好的做法?
var foo = function(x) {
return fromTheFuture * x;
};
var fromTheFuture = 5;
console.log(foo(10));
我可以看到这非常方便,如果你有几个函数想要以循环方式相互使用 - 而不必在方法的开头用var
声明它们。
答案 0 :(得分:5)
当调用foo
时,fromTheFuture
被定义。更准确地说,由于提升,您的代码基本上是:
var foo, fromTheFuture;
foo = function(x) {return fromTheFuture*x;};
fromTheFuture = 5;
console.log(foo(10));
如果您在foo(10)
之前致电fromTheFuture=5
,您将获得NaN
。
答案 1 :(得分:1)
是的,整个脚本首先处理,将变量添加到“数据存储”,然后才执行执行。
然而,这并不鼓励,因为它使代码难以阅读。如果您想了解有关javascript代码质量的更多信息,请查看jslint。它是js的一种FxCop。尝试在那里复制粘贴代码。
答案 2 :(得分:1)
reasone在javascript中将它首先定义为所有变量然后开始初始化然后在某个地方需要它的初始化点之后尝试初始化首先调用一个