2011-06-09 49 views
5

我使用最新的Firefox(4.0.1)和Firebug(1.7.2)。爲什麼控制檯中的變量聲明不斷返回「undefined」?

無論何時我向控制檯輸入變量聲明,都會返回一個斜體的「未定義」警告。

因此,例如,如果我輸入「var x = 5;」那麼響應是「未定義的」,而不是「5」。

之後,如果我在控制檯中輸入「x」,則返回適當的值5。然而,錯誤/警告是有點麻煩,真的想知道原因和解決方案,如果我是唯一遇到這種情況。有趣的是,如果我不使用「var」而只是使用「x = 5」聲明該值,那麼正確的行爲就會顯示出來,並且在控制檯中返回「5」。

回答

4

(這只是一個猜測,我沒有對JavaScript的語言規則或Firebug的細節方面的專家。)

反饋控制檯給你的是你進入該行的評估結果。我假設聲明var x = ...是一個沒有價值的聲明,而簡單賦值(x = ...)符合C遺產和函數式語言的「一切都是表達式」態度,該表達式評估爲分配的值。

+0

我也這麼認爲。 :)(+1) – R1234 2011-06-09 18:26:36

+2

你是對的;具體而言,[聲明語句根據規範的第12.2節沒有返回任何內容,賦值表達式按照§11.13.1](http://stackoverflow.com/a/13180929/201952)返回分配的值。 – josh3736 2012-11-01 16:21:55

+0

@ josh3736太棒了,謝謝你的發現! – delnan 2012-11-01 16:24:14

0

螢火蟲正在報告計算表達式的結果,等同於:

typeof運算的eval( 「VAR X = 5;」);
「undefined」

typeof eval(「x = 5;」);
「數字」