Javascript逻辑运算符&&语句?

big*_*olf 2 javascript backbone.js

我已经开始挖掘骨干了,当使用路由器功能创建和销毁视图时,我遇到了这个小片段,这对我来说没有多大意义,因为我一直认为这些操作符只适用于条件陈述,

this.view && this.view.remove();
Run Code Online (Sandbox Code Playgroud)

这是一个连接到路由器的方法,它看起来像一个魅力,但我总是厌倦了不适合我的伏都教代码.

这是完整的方法

loadView : function(view) {
        this.view && this.view.remove();
        this.view = view;
    }
Run Code Online (Sandbox Code Playgroud)

很想更好地理解这一点,希望它不要太傻了.

干杯.

Way*_*ett 5

在JavaScript中:

this.view && this.view.remove();
Run Code Online (Sandbox Code Playgroud)

相当于

this.view ? this.view.remove() : this.view;
Run Code Online (Sandbox Code Playgroud)

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

if (this.view) {
    this.view.remove();
}
Run Code Online (Sandbox Code Playgroud)

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