我开始挖掘骨干,在使用路由器功能创建和销毁视图时,我遇到了这个小片段,这对我来说并不是很有意义。总是假设这些类型的运算符只能在条件语句中工作,
this.view && this.view.remove();
这是一个附在路由器上的方法,它看起来像一个魅力,但我总是厌倦了与我不相配的伏都教代码。
继承完整的方法
loadView : function(view) {
this.view && this.view.remove();
this.view = view;
}
希望能更好地理解这一点,希望它不要太傻了。
干杯。
答案 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中的运算符&&
计算第一个表达式,如果它是伪造的,则返回它,如果它是真实的,则计算并返回第二个表达式。
对于||
,它是相反的:第一个表达式被计算,如果它是真实的,则返回它,否则第二个表达式被计算并返回。