簡體   English   中英

檢查jQuery中是否未定義和null

[英]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" ,那么你知道它不是nullundefined ,所以:

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

  • nullundefined都是“falsy”值,因此可以檢查它們是否為布爾值。 因此,與nullundefined相比沒有任何意義,除非您需要知道它們是否是這樣的值。

  • 比較時,最好使用嚴格的比較(如===!==等)

  • 條件中的&&如果前面的條件是“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用於selectedIndextagName等屬性。

不要只檢查一個值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還是未定義,因為:

  1. null或undefined在布爾表達式中返回false。

  2. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM