1

ここで関数を作成するとき、まだ宣言されていないfoo変数を参照します。fromTheFutureこれは実際には期待どおりに機能しますが、なぜですか? それは危険または悪い習慣と見なされますか?

var foo = function(x) {
  return fromTheFuture * x;
};

var fromTheFuture = 5;

console.log(foo(10));

varただし、メソッドの先頭ですべてを宣言する必要なく、循環的に相互に使用したい関数がいくつかある場合、これは非常に便利であることがわかります。

4

3 に答える 3

5

fooが呼び出されるまでに、fromTheFuture定義されます。より正確には、ホイストにより、コードは基本的に次のようになります。

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

foo(10)の前にコールすると、 が返されfromTheFuture=5ますNaN

于 2012-09-08T15:13:11.333 に答える