Javascript逻辑运算符&&在声明中?

时间:2014-01-27 20:21:08

标签: javascript backbone.js

我开始挖掘骨干,在使用路由器功能创建和销毁视图时,我遇到了这个小片段,这对我来说并不是很有意义。总是假设这些类型的运算符只能在条件语句中工作,

this.view && this.view.remove();

这是一个附在路由器上的方法,它看起来像一个魅力,但我总是厌倦了与我不相配的伏都教代码。

继承完整的方法

loadView : function(view) {
        this.view && this.view.remove();
        this.view = view;
    }

希望能更好地理解这一点,希望它不要太傻了。

干杯。

2 个答案:

答案 0 :(得分:5)

在JavaScript中:

this.view && this.view.remove();

相当于

this.view ? this.view.remove() : this.view;

只有在左手边是 truthy 时才会执行右侧。如果忽略表达式的值并且左侧没有副作用(如本例所示),那么它也等同于:

if (this.view) {
    this.view.remove();
}

因此,在这种特定情况下,如果存在view,则会将其删除。请注意,此表达式的值不一定是布尔值(与许多其他语言不同);这是remove返回的任何内容。但是,这个值会被忽略,所以它实际上并不相关。

答案 1 :(得分:1)

javascript中的运算符&&计算第一个表达式,如果它是伪造的,则返回它,如果它是真实的,则计算并返回第二个表达式。

对于||,它是相反的:第一个表达式被计算,如果它是真实的,则返回它,否则第二个表达式被计算并返回。