在一篇 jQuery特殊事件文章中,我发现了以前从未见过的语法:
var threshold = data && data.threshold || 1
我之前看过以下内容:
var threshold = data.threshold || 1
据我所知,这意味着:设置为,data.threshold
或者如果它的值null
设置为1
. 我可以得到第一种语法的解释吗?
在一篇 jQuery特殊事件文章中,我发现了以前从未见过的语法:
var threshold = data && data.threshold || 1
我之前看过以下内容:
var threshold = data.threshold || 1
据我所知,这意味着:设置为,data.threshold
或者如果它的值null
设置为1
. 我可以得到第一种语法的解释吗?
&&
具有比 更高的关联性||
,因此第一个示例实际上意味着:
var threshold = (data && data.threshold) || 1;
您可以将其理解为“仅当且具有真实值时设置threshold
为,否则将其设置为 1”。如果是 null/undefined/etc 并且代码在没有先检查的情况下尝试访问,这将导致异常。此语法允许以紧凑的方式同时检查两者。data.threshold
data
data.threshold
data
data.threshold
data
在英语中它的意思是
如果数据为真且(符号)为真
,则设置为,或(否则)
设置为 1。&&
data.threshold
threshold
data.threshold
threshold
truthy 表示不为空,不为未定义,也不为 0(除其他外)。
&&
如果左侧评估为假,则返回左侧。否则返回右侧。
所以如果data
为假,则返回date
,所以||
then 传入1
。
如果data
不是假的,而是假data.threshold
的,它也评估为假,所以||
仍然通过1
。
如果data.threshold
为真,则||
通过左侧,即data.threshold