[英]Checking if undefined and null in jQuery
檢查是否為null或未定義以及是否應該使用時,我有點困惑!==
或!=
和“undefined”或undefined。
這是我正在研究的一些代碼。 我的null / unudefined等在哪里出錯?
var c = (jQuery(this).prop("target") != null && jQuery(this).prop("target") != undefined && jQuery(this).prop("target").toLowerCase() == "_blank") ? 1 : 0;
謝謝
一般來說,保持簡單。
要檢查undefined
,請使用:
foo === undefined
foo !== undefined
要檢查null
,請使用:
foo === null
foo !== null
要同時檢查,請使用:
foo == null
foo != null
無論如何,將.prop()
存儲到變量中以保持其清潔。 但在你的情況下,如果它等於"_blank"
,那么你知道它不是null
或undefined
,所以:
var targ = jQuery(this).prop("target").toLowerCase();
var c = targ === "_blank" ? 1 : 0;
或者你可以通過將boolean
強制轉換為number
來縮短它:
var targ = jQuery(this).prop("target").toLowerCase();
var c = +(targ === "_blank");
最后兩個解決方案是安全的,因為.prop()
將始終返回一個string
。
null
和undefined
都是“falsy”值,因此可以檢查它們是否為布爾值。 因此,與null
和undefined
相比沒有任何意義,除非您需要知道它們是否是這樣的值。
比較時,最好使用嚴格的比較(如===
, !==
等)
條件中的&&
如果前面的條件是“falsy”,則不會評估以下條件。
您甚至不需要jQuery,因為this
是您的DOM對象(可能是<a>
),並且您正在嘗試獲取target
屬性:
到底:
var c = (this.target && this.target.toLowerCase() === "_blank") ? 1 : 0;
這是檢查undefined的最佳方法:
if(typeof variable_here != 'undefined'){
// your code here.
};
這是檢查null的最佳方法:
if(variable_here !== null){
// your code here.
};
所以你的代碼應該是這樣的:
var c = (jQuery(this).prop("target") !== null && typeof jQuery(this).prop("target") !== 'undefined' && jQuery(this).prop("target").toLowerCase() == "_blank") ? 1 : 0;
由於undefined是變量類型,因此使用typeof
var c = (
$(this).attr("target") != NULL &&
typeof $(this).attr("target") != "undefined" &&
$(this).attr("target").toLowerCase() == "_blank"
) ? 1 : 0;
但是,我認為你只需要最后一次檢查。 目標是"_blank"
, c
需要為1
,否則為0
。 如果target
是否設定真的很重要嗎?
另外,使用attr()方法獲取屬性,因為prop()
if用於selectedIndex
或tagName
等屬性。
不要只檢查一個值3次獲得相同的屬性。
var c = 0;
var prop = $(this).prop("target");
if(prop && prop.toLowerCase() === "_blank") c = 1;
我得到的這樣的東西與你的問題無關,但會幫助你
var targ = jQuery(this).prop("target").toLowerCase();
現在,如果要檢查targ是null還是undefined
var c = (!targ || "") ? 1 : 0
希望這個能對您有所幫助
在JavaScript中,您不需要顯式檢查變量是null還是未定義,因為:
null或undefined在布爾表達式中返回false。
JS表達式從左到右進行評估。 所以對於|| b,如果a為假,則僅評估b。 但如果a為真,則不會檢查b。 類似地,對於&& b,如果a為假,則不會評估b。
因此,如果(a!= null){“做某事”}可以寫成好像(a){“做某事”}或簡單地用&&“做某事”。
以同樣的方式,當值設置為null或undefined時,它可用於設置默認值:
function someFunction(age){
var age= age|| 18;
}
參考: https : //codereview.stackexchange.com/questions/472/usage-of-the-ternary-operator-with-functions-listening-to-click-events
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.