2015-04-14 49 views
0

我在這行代碼:未捕獲的ReferenceError:X未定義 - JS解析限制?

var Y = 1; 
var Z = X || Y; 

其中,在某些情況下 - 而y成立的X值沒有定義。

雖然我發誓,我還以爲是工作之前..

我突然得到「未捕獲的ReferenceError:X沒有定義」。

不是||運營商意在支持這種情況?

它似乎對工作:

var X = X || 1; 

當X以前從未定義..

這是由於某種JS解析的限制?我很想知道。

感謝

回答

3

I suddenly get "Uncaught ReferenceError: X is not defined".

您正在嘗試從一個變量來閱讀你與var(或函數參數列表)宣佈它之前或寫入。

Wasn't the || operator meant to support such cases?

It does seem to work for var X = X || 1;

你有一個var X所以X變量在該實例聲明。

With var Z = X || Y;您聲明Z但不是XY已在上一行中聲明)。

+0

只是打我吧 – Sharky

1

var X = X || 1;作品歸因於hoisting

它實際上是:

var x; 
x = x || 1 // undefined || 1 
相關問題