This question already has answers here:
Difference between using a ternary operator or just short-circuit evaluation?
                                
                                    (2个答案)
                                
                        
                                2年前关闭。
            
                    
当某些内容未定义时,可以通过以下两种方式提供默认值。

我一直想知道之间有什么区别:

return {
   name: user.name || 'Raul'
}


还有这个:

return {
   name: user.name ? user.name : 'Raul'
}


我应该使用其他药物,还是要注意的副作用?

最佳答案

js中使用条件和||之间的区别


假设name是一个简单的属性,那么在这种特殊情况下,没有一个。无论哪种方式,您都会得到相同的结果。没有强烈的理由使用一个或另一个,只是您自己的样式首选项,而没有一个对另一个的副作用。

但是,如果name是具有getter的属性,则将有所不同:在||情况下,getter将仅被调用一次。在? :情况下,它可能被调用两次(例如,如果它返回真实值):



var user = {
  get name() {
    console.log("getter called");
    return "Ramón";
  }
};

var name;

console.log("Using ||");
name = user.name || "Raul";
console.log(name);

console.log("Using ? :");
name = user.name ? user.name : "Raul";
console.log(name);





因此,如果吸气剂有副作用(如上述副作用),那将很重要。 (字母永远不应该有副作用。)

同样,如果userProxy,则其各种陷阱可能被调用两次。



可能值得注意的是,在两种情况下,如果user.name"",您将得到"Raul" ...

10-05 20:47
查看更多