检查jQuery中是否未定义和null
检查是否为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;
谢谢
-
null
和undefined
都是“falsy”值,因此可以检查它们是否为布尔值。 因此,与null
和undefined
相比没有任何意义,除非您需要知道它们是否是这样的值。 -
比较时,最好使用严格的比较(如
===
,!==
等) -
条件中的
&&
如果前面的条件是“falsy”,则不会评估以下条件。
到底:
var c = (this.target && this.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
。
这是检查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还是未定义
var c = (!targ || "") ? 1 : 0
希望对你有帮助