K G*_*oll 4 javascript jquery ternary-operator
检查是否为null或未定义以及是否应该使用!==
或!=
"未定义"或未定义时,我有点困惑.
这是我正在研究的一些代码.我的null/unudefined等在哪里出错?
var c = (jQuery(this).prop("target") != null && jQuery(this).prop("target") != undefined && jQuery(this).prop("target").toLowerCase() == "_blank") ? 1 : 0;
Run Code Online (Sandbox Code Playgroud)
谢谢
the*_*tem 11
一般来说,保持简单.
要检查undefined
,请使用:
foo === undefined
foo !== undefined
Run Code Online (Sandbox Code Playgroud)
要检查null
,请使用:
foo === null
foo !== null
Run Code Online (Sandbox Code Playgroud)
要同时检查,请使用:
foo == null
foo != null
Run Code Online (Sandbox Code Playgroud)
无论如何,将您存储.prop()
到变量以保持其清洁.但是,在你的情况,如果它等于"_blank"
,那么你知道它是不是null
和undefined
,所以:
var targ = jQuery(this).prop("target").toLowerCase();
var c = targ === "_blank" ? 1 : 0;
Run Code Online (Sandbox Code Playgroud)
或者你可以通过强制boolean
转换为number
:
var targ = jQuery(this).prop("target").toLowerCase();
var c = +(targ === "_blank");
Run Code Online (Sandbox Code Playgroud)
最后两个解决方案是安全的,因为它.prop()
总会返回一个string
.
双方null
并undefined
都"falsy"的价值观,因此,他们可以像他们布尔值检查.因此,有没有意义的比较,null
以及undefined
除了在这里你需要知道,如果他们是这样的值某些情况.
比较时,最好使用严格的比较(如===
,!==
等等)
的&&
,如果一个前述它是"falsy"在条件不评估以下条件.
你甚至不需要jQuery,因为this
你的DOM对象(大概是一个<a>
)而你正试图获得target
属性:
到底:
var c = (this.target && this.target.toLowerCase() === "_blank") ? 1 : 0;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
63657 次 |
最近记录: |