使用“和”或语法进行null检查

时间:2012-11-14 14:31:06

标签: javascript syntax null

在jQuery special events article中,我发现了以前没见过的语法:

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

我之前见过以下内容:

var threshold = data.threshold || 1

据我所知,这意味着:设置为data.threshold或其值为null,然后设置为1。我可以先解释一下第一种语法吗?

3 个答案:

答案 0 :(得分:6)

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

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

只有当thresholddata.threshold具有真值时,您才能将其设为“data设为data.threshold,否则请将其设为1”。如果data为null / undefined / etc且代码尝试在未先检查data.threshold的情况下访问data,则会导致异常。此语法允许以紧凑的方式立即检查两者

答案 1 :(得分:3)

在英语中意味着

如果数据真实的话   AND &&符号)
data.threshold是真实的,将threshold设置为data.threshold
(否则)
threshold设置为1。

truthy表示不为null,不是未定义,而不是0(除其他外)。

答案 2 :(得分:1)

如果左侧评估为false,则

&&返回左侧。否则它会返回右侧。

因此,如果data为false,则会返回date,因此||会传递1

如果data不是假,但是data.threshold是,则它也会评估为false,因此||仍会传递1

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