什么是var = var&& “*”表示Javascript

时间:2012-12-24 09:56:44

标签: javascript

我正在尝试通过阅读它来制定出一些有问题的代码,而且我做得很好,直到遇到这个:

a = a && "*"

现在我还是Javascript的新手,这些缩短的不常见的javascript代码对我来说仍然非常陌生,这是我第一次遇到它们。

有人知道这是做什么的吗?我在一个javascript代码测试器广告中尝试过它刚刚返回*,所以我不知道。

此外,如果有人知道我可以在哪里找到这些不常见的代码行,那将非常有帮助。它们都缩短了,有各种各样的东西和

a = a || b

(我知道那个人做了什么)

但如果这种javascript或我可以看到的引用有某种名称,那将非常有用,我已经在Google上搜索了几个小时。

由于

1 个答案:

答案 0 :(得分:3)

如果a真实,则会将"*"分配给a

如果a是假的,它仍然保持不变。


&&具有短路语义:复合表达式(e1) && (e2) - 其中e1e2是任意表达式本身 - 评估为

  • e1如果e1在布尔上下文中评估为false - e2 已评估
  • e2如果e1在布尔上下文中评估为true

暗示e1e2以及整个表达式(e1) && (e2)需要评估为真或假!< / p>

在布尔上下文中,以下值评估为false as per the spec

  • 未定义
  • ±0
  • 的NaN
  • 空字符串

所有 1 其他值均被视为true

上述值简洁地称为“falsy”,其他值则称为“truthy”。

应用于您的示例a = a && "*"

根据前面提到的&&短路评估规则,如果a falsy ,表达式的评估结果为a,然后依次分配给a,即语句简化为a = a

如果a truthy ,则右侧的表达式评估为*,而a又分配给(e1) || (e2)。< / p>


至于你的第二个问题e1有类似的语义:

整个表达式的计算结果为:

  • e1如果e2是真实的
  • e1如果{{1}}是假的

1 Exception