2

在一篇 jQuery特殊事件文章中,我发现了以前从未见过的语法:

var threshold = data && data.threshold || 1

我之前看过以下内容:

var threshold = data.threshold || 1

据我所知,这意味着:设置为,data.threshold或者如果它的值null设置为1. 我可以得到第一种语法的解释吗?

4

3 回答 3

6

&&具有比 更高的关联性||,因此第一个示例实际上意味着:

var threshold = (data && data.threshold) || 1;

您可以将其理解为“仅当且具有真实值时设置threshold为,否则将其设置为 1”。如果是 null/undefined/etc 并且代码在没有先检查的情况下尝试访问,这将导致异常。此语法允许以紧凑的方式同时检查两者data.thresholddatadata.thresholddatadata.thresholddata

于 2012-11-14T14:34:08.520 回答
3

在英语中它的意思是

如果数据为真且(符号)为真
则设置为,(否则) 设置为 1。&&
data.thresholdthresholddata.threshold

threshold

truthy 表示不为空,不为未定义,也不为 0(除其他外)。

于 2012-11-14T14:33:44.957 回答
1

&&如果左侧评估为假,则返回左侧。否则返回右侧。

所以如果data为假,则返回date,所以||then 传入1

如果data不是假的,而是假data.threshold的,它也评估为假,所以||仍然通过1

如果data.threshold为真,则||通过左侧,即data.threshold

于 2012-11-14T14:33:34.510 回答