<分区>
当某些东西未定义时,有以下两种方式给出默认值。
我一直想知道这之间有什么区别:
return {
name: user.name || 'Raul'
}
还有这个:
return {
name: user.name ? user.name : 'Raul'
}
有什么我应该使用的,或者我应该注意的副作用吗?
<分区>
当某些东西未定义时,有以下两种方式给出默认值。
我一直想知道这之间有什么区别:
return {
name: user.name || 'Raul'
}
还有这个:
return {
name: user.name ? user.name : 'Raul'
}
有什么我应该使用的,或者我应该注意的副作用吗?
最佳答案
difference between using conditional and
||
in 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);
因此,如果 setter/getter 有副作用(如上面的副作用),那将很重要。 ( setter/getter 永远不应该有副作用。)
类似地,如果 user
是 Proxy , 它的各种陷阱可能会被调用两次。
可能值得注意的是,在这两种情况下,如果 user.name
是 ""
,您将得到 "Raul"
...
关于javascript - 使用条件和 || 之间的区别在 js 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46564153/
相关文章:
jquery - 如何检查 Jquery 中是否打开了多个对话框?
php - Mysql/PHP如果输入多个$_POST数据则添加AND
javascript - URL JS 对象什么时候出现在 Chrome 中?
javascript - TypeError : db. admin 不是一个函数
javascript - 如何在没有外部库的情况下监听 Google Maps API 事件?
reactjs - Pickers Material ui,错误仅以英文显示
javascript - React JS - 从外部属性文件读取环境配置