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

标签 javascript reactjs if-statement ecmascript-6

<分区>

当某些东西未定义时,有以下两种方式给出默认值。

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

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 永远不应该有副作用。)

类似地,如果 userProxy , 它的各种陷阱可能会被调用两次。


可能值得注意的是,在这两种情况下,如果 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 - 从外部属性文件读取环境配置

mysql - 如果前一列为空,则只更新一列(下一列)

javascript - Google Maps API v3 折线在更新时不显示

javascript - 如何删除 javascript/jquery 中动态创建的元素?