在 JavaScript 中编写三元运算符的另一种方法
Another Way to Write Ternary Operator in JavaScript
这是逻辑运算吗:
const user = users && users[0] || null;
同这个条件/三元运算:
const user = users ? users[0] : null;
?假设 users
是一个数组。
不,它们不一样。如果 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
)
单独使用 users
并不是进行测试的好方法。有些语言喜欢
Go 只允许对布尔值进行测试。为此,最好是
如果可能的话,测试一个布尔值。类似于:
const user = users.length > 0 ? users[0] : null;
这是逻辑运算吗:
const user = users && users[0] || null;
同这个条件/三元运算:
const user = users ? users[0] : null;
?假设 users
是一个数组。
不,它们不一样。如果 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
)
单独使用 users
并不是进行测试的好方法。有些语言喜欢
Go 只允许对布尔值进行测试。为此,最好是
如果可能的话,测试一个布尔值。类似于:
const user = users.length > 0 ? users[0] : null;