在一篇 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.thresholddatadata.thresholddatadata.thresholddata
在英语中它的意思是
如果数据为真且(符号)为真
,则设置为,或(否则)
设置为 1。&&
data.thresholdthresholddata.threshold
threshold
truthy 表示不为空,不为未定义,也不为 0(除其他外)。
&&如果左侧评估为假,则返回左侧。否则返回右侧。
所以如果data为假,则返回date,所以||then 传入1。
如果data不是假的,而是假data.threshold的,它也评估为假,所以||仍然通过1。
如果data.threshold为真,则||通过左侧,即data.threshold