我想檢查此:是否有一個很好的簡單方法來檢查Javascript中的變量是否有值?
if (typeof myVar != "undefined" && myVar != null)
...
換句話說,我要檢查,如果一個變量具有定義的值(包括0或空字符串),但不undefined或null,其解讀爲無價值。
我每次都必須做兩部分檢查還是有方便的快捷方式?
我想檢查此:是否有一個很好的簡單方法來檢查Javascript中的變量是否有值?
if (typeof myVar != "undefined" && myVar != null)
...
換句話說,我要檢查,如果一個變量具有定義的值(包括0或空字符串),但不undefined或null,其解讀爲無價值。
我每次都必須做兩部分檢查還是有方便的快捷方式?
如果你想允許0
和""
作爲有效值和你想覆蓋變量的情況下,甚至可能不會delcared,但不考慮空有效的值,那麼你必須明確檢查undefined
和null
這樣的:
if (typeof myVar !== 'undefined' && myVar !== null)
...
很多價值觀是falsey(他們並不滿足if (myVar)
,所以你真的有意識地決定你要測試哪些針對所有這些都是falsey:
undefined
false
0
""
null
NaN
如果你想允許一些,但不是其他人,那麼你必須做一個比上面顯示的if (myVar)
更具體的測試,以隔離你關心的值。
下面是對falsey值的一個很好的寫法:http://www.sitepoint.com/javascript-truthy-falsy/。
如果知道變量已經宣佈和你只是想看看它是否已與非NULL的初始化,您可以使用此:
if (myVar != undefined)
...
只使用!=
,而不是!==
允許這通過類型轉換測試undefined和null。雖然我不推薦這樣做,因爲如果你想辨別falsey值,最好不要讓JS引擎做任何類型的轉換,所以你可以控制它的功能,而不必記住所有的類型轉換平等規則。我這個固守待更明確:
if (typeof myVar !== 'undefined' && myVar !== null)
...
如果你想知道是否有任何非falsey值,當然你可以做到這一點(但不會允許0
或""
爲有效值:
if (myVar)
...
2-部件方法如果不檢查的typeof
首先,你會得到一個引用錯誤最終
如果MYVAR可能是不確定的,稱它沒有。檢查類型將引發錯誤。
如果它被定義爲null(如myvar = element.lastChild沒有孩子的元素),如果你只是使用typeof,你會錯過捕獲它。
那麼,null是一個定義的值...所以如果你想確保變量不包含null,並且沒有定義,你必須執行兩個檢查。
'null == undefined'返回'true'。 'null === undefined'返回'false'。 – Kenaniah
參見:http://stackoverflow.com/questions/6031372/undefined-and-null –
爲自己寫一個函數並回到解決真正的問題:) – Kos