12

実行時

var a=b=c=d=e=f=a; 
//no error(a has not initialize before)

var x=y;
//ReferenceError: y is not defined

a最初のコードが以前に初期化されているかのように実行するにはどうすればよいでしょうか。

4

2 に答える 2

11

可変巻きのせいです。var x = EXPR;実際には次のように変換されます。

// beginning of the block (function/file)
var x; // === undefined
// ...
// the actual position of the statement
x = EXPR

あなたの例では、これは次のことを意味します。

var a;  // === undefined
a = b = c = d = e = f = a;

aのみが using で宣言されていることに注意してください。つまり、var大量のグローバルを作成していることになりますが、これは常に悪いことです。

于 2013-07-08T07:04:13.050 に答える