【问题标题】:Another Way to Write Ternary Operator in JavaScript在 JavaScript 中编写三元运算符的另一种方法
【发布时间】:2021-02-13 21:59:30
【问题描述】:

这是逻辑运算吗:

const user = users && users[0] || null;

和这个条件/三元运算一样:

const user = users ? users[0] : null;

?假设users 是一个数组。

【问题讨论】:

  • 如果users 总是一个数组,它总是 thruthy 并且测试它是没有意义的。

标签: javascript arrays conditional-operator


【解决方案1】:

单独使用users 并不是一个很好的测试方法。有些语言像 Go 只允许对布尔值进行测试。为此,最好是 如果可能,测试一个布尔值。比如:

const user = users.length > 0 ? users[0] : null;

【讨论】:

    【解决方案2】:

    不,它们不一样。如果users[0] 为假,则|| null 将在第一个代码中被选中:

    const users = [0];
    const user1 = users && users[0] || null;
    const user2 = users ? users[0] : null;
    
    console.log(user1, user2);

    条件运算符可能是更好的选择。但是,更好的是,在现代 JavaScript 中,您可以使用可选链来代替,这更加简洁:

    let users;
    
    const user = users?.[0];
    console.log(user);

    (但请注意,如果嵌套属性不存在,它会为您提供undefined,而不是null

    【讨论】:

    • 啊有趣,我不知道可选链。这就像在 Kotlin 中的安全调用。
    猜你喜欢
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 2019-10-08
    • 2013-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    相关资源
    最近更新 更多