2012-11-21 50 views
0

我無法找到爲什麼這不起作用:三元運算符不工作,我可以把(這個或那個)作爲表達式嗎?

value = ((value == undefined) || (typeof(value) !=== "number")) ? 1 : value; 

據我所知這應該設置value要麼1value(變量),這取決於是否value不是數字。

如果值不是數字,請將其更改爲1,如果是,請將其保留。

我在這裏做錯了什麼?

+3

'!==='應該是'!==':'SyntaxError:意外的標記='。 **但是**如果你的value沒有被聲明,那麼你仍然會得到一個錯誤...只是做了value = typeof(value)!==「number」? 1:value'應該沒問題(因爲'undefined'也不是數字)。 –

+0

你能指定「不行」嗎?當你運行代碼時會發生什麼,這與你期望的有什麼不同?你有任何錯誤信息? – Guffa

+0

對於未來,如果您提供的問題比「不起作用」更好,您通常會得到更好的建議。 – hobbs

回答

2

從快看!

===(有三個等號)是一個錯字。正確的運算符是!==(兩個等號)。

無論何時您遇到Javascript問題,我強烈建議您在http://www.jslint.com/處處理所有警告和問題 - 這有助於捕捉大量眼睛看不到的東西。

+0

謝謝。該網站是驚人的,並會幫助我這麼多! –

2

如果將!===(實際上並不存在)更改爲!==(這是===的邏輯反轉),則此方法正常。

2

您正在使用一個太多等號。正確的語法是!==

只需使用value = (typeof(value) !== "number") ? 1 : value;

(value == undefined)條件是多餘的,因爲後者總是爲真時,前者。

+0

謝謝阿薩德!非常真實,我會刪除它。 –

相關問題