This question already has answers here:
Difference between using a ternary operator or just short-circuit evaluation?
(2个答案)
2年前关闭。
当某些内容未定义时,可以通过以下两种方式提供默认值。
我一直想知道之间有什么区别:
还有这个:
我应该使用其他药物,还是要注意的副作用?
因此,如果吸气剂有副作用(如上述副作用),那将很重要。 (字母永远不应该有副作用。)
同样,如果
可能值得注意的是,在两种情况下,如果
(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);
因此,如果吸气剂有副作用(如上述副作用),那将很重要。 (字母永远不应该有副作用。)
同样,如果
user
是Proxy,则其各种陷阱可能被调用两次。可能值得注意的是,在两种情况下,如果
user.name
是""
,您将得到"Raul"
...