2014-07-05 47 views

回答

-1

您正在嘗試使用之前未聲明的變量。這會導致參考錯誤。

這麼多錯誤的單詞。

[退出] @grc說得對。

+2

'X = x'是賦值操作,而不是比較 – hindmost

-1

x = x || 4表示在變量x中分配x或4。 如果x爲空4分配給變量x

可能是你沒有聲明x變量。這就是爲什麼你得到x is not defined

如果你試圖在它下面的工作:

var x; 
x=x||4; 
alert(x); 

這也將工作:

x=x||4; 
var x; 
alert(x); 
+0

什麼是錯誤的答案??? –

2

這是因爲變量聲明首先處理(提升)。該MDN page on var解釋說得好:

Because variable declarations (and declarations in general) are processed before any code is executed, declaring a variable anywhere in the code is equivalent to declaring it at the top. This also means that a variable can appear to be used before it's declared. This behaviour is called "hoisting", as it appears that the variable declaration is moved to the top of the function or global code.

所以下面也將工作:

x = x || 4; 
var x; 
+0

那麼,爲什麼'x =(x || 5)'產生錯誤?另外,我不想使用'var',這個變量應該被全局聲明。 – PHPst

+1

因爲變量'x'不是解析器已知的 - 而試圖訪問它的值會拋出'ReferenceError'。如果你真的想用全局變量,使用'window.x = window.x || 4'語法。 – raina77ow

+0

請注意'x = window.x || 4'在非嚴格模式下可以正常工作,但在嚴格模式下會引發錯誤。 – raina77ow

相關問題