回答
您可以對undefined
值進行嚴格比較。
if (x === undefined) {
x = 0;
}
當然你要確保x
已經正確申報如常。
如果您有關於undefined
值由非常糟糕的代碼(用新值覆蓋)被困擾的任何敏感,那麼你可以使用void
運營商獲得有保證的undefined
。你可以做一個比較嚴格的undefined
值。
if (x === void 0) {
x = 0;
}
與void
無關的操作數。不管你給它什麼,它都會返回undefined
。
這些都是等價的:
if (x === void undefined) {
x = 0;
}
if (x === void "foobar") {
x = 0;
}
if (x === void x) {
x = 0;
}
最後,如果有人壓扁undefined
本地(不能再全球壓扁),這是更好地解決這個糟糕的代碼。
如果你想同時檢查null
和undefined
在同一時間,只有那些價值,你可以用==
,而不是===
。
if (x == null) {
x = 0;
}
現在x
將被設置爲0
,如果這是不是null
或undefined
,但沒有任何其他價值。您也可以在測試中使用undefined
。完全一樣。
if (x == undefined) {
x = 0;
}
從你的問題,好像你一點點會專門找number
元素,甚至NaN
。如果您想將其限制爲原始數字,包括NaN
,則使用typeof
進行測試。
if (typeof x !== "number") {
x = 0;
}
但是,你會失去數字字符串,並且可以成功地轉換爲數字的其他值,所以這取決於你最終需要。
如果我定義的變量如下: var x = parseFloat(self.y()); 在這種情況下,x總是成爲NaN,不管x是未定義的還是NaN。有沒有什麼辦法可以檢查X是否未定義? – user3312508 2014-12-05 16:42:22
@ user3312508:您只需使用'if'語句。你說如果'x'不是'undefined',那麼你想運行'parseFloat(self.y());'部分並將它分配給'x',對吧? – 2014-12-05 16:45:12
您可以測試使用typeof(除其他事項外):
if (typeof x == 'undefined') x = y;
另一種方法是,以測試對未定義全等:
if (x === void 0) x = y
在這種情況下,我們使用void 0
以來undefined
安全實際上可以重新定義。
*「,因爲'undefined'實際上可以被重新定義。」*自ES5以來。 – 2014-12-05 16:23:03
當然,但是作爲一個實際問題,我幾乎不建議讓一個不知道如何寫if語句的人混淆,以比較某些未定義的東西,比如void 0,以及它與實際上不存在的概率之間的關係'undefined'已被重新定義,這是我在十多年的JS編程中從未見過的東西。 – 2014-12-05 16:24:20
@torazaburo:*「......我在JS編程的十多年中從未見過的東西」*你和我都是。讓我感到奇怪的是,人們對全球「未定義」的重新定義或影子的迷戀,而不是其他全球定義的影子。 – 2014-12-05 16:28:45
你可以只用
x === undefined && (x = 0);
這是不好的語法,會失敗大多數棉絨。 – 2014-12-05 16:20:26
我接受linters會抱怨意外的任務,但我不明白爲什麼這是「糟糕的語法」。它利用了邏輯運算符可以短路的事實。 – 2014-12-05 16:23:53
讓縮小器做這種重寫,其中大部分都會做。對於普通人來說,寫if語句作爲if語句。 – 2014-12-05 16:25:54
- 1. 將JavaScript undefined替換爲null
- 2. 將false轉換爲undefined(JavaScript)
- 3. Javascript minification爲什麼用false替換!1和true用0
- 4. 定義替換爲0
- 5. Javascript替換爲
- 6. 替換backbone.js中的undefined
- 7. 在Mac OSX中替換爲--no-undefined
- 8. JavaScript正則表達式替換$ 0
- 9. 將R,「是」替換爲1,將「否」替換爲0
- 10. 。替換爲JavaScript/jQuery
- 11. isalpha替換爲JavaScript?
- 12. 用NA替換整數(0)
- 13. 用空格替換0
- 14. 用NaN替換float 0
- 15. JavaScript:將NaN轉換爲0
- 16. Javascript替換方法,替換爲「$ 1」
- 17. 。替換爲Javascript替換多個字符
- 18. 將json_encode轉換爲Javascript undefined/null
- 19. Javascript正則表達式替換[0]而不是0
- 20. javascript的意義:void(0)返回「undefined」
- 21. Javascript無法設置屬性0的undefined
- 22. 將MYSQL中的44替換爲0?
- 23. 替換後動畫到高度爲0
- 24. 在mysql中將0替換爲null
- 25. 將矩陣中的0替換爲NA
- 26. Tablesorter n [0] undefined
- 27. Javascript Methodname被替換爲!==
- 28. JavaScript替換爲增量
- 29. 全部替換爲javascript
- 30. 的Javascript替換爲等號
'的typeof X === undefined'' – ajp15243 2014-12-05 16:15:57
很快做到這一點,你可以展示你的代碼,請。 – putvande 2014-12-05 16:17:06
讓我們來看看,如何檢查是否有未定義的東西?這聽起來像我可能會測試一些東西的聲明!也許我可以嘗試一個'if'語句。但是,情況會是怎樣?也許這將是一個「平等」的條件,你知道,這是'==='。所以只是猜測,但也許'x === undefined'可以工作,或者完成'if'語句,if(x === undefined)'。那裏,那並不難。 – 2014-12-05 16:19:45