gpt4 book ai didi

javascript - 在条件运算符内赋值

转载 作者:行者123 更新时间:2023-11-30 11:04:54 33 4
gpt4 key购买 nike

在条件运算符中为变量赋值是一种好习惯吗?这是关于条件/turnery 运算符而不是关于 if 语句

 a===1 ? (b=2) : (b=0)

我在使用此方法时收到 lint 警告。

最佳答案

不,将赋值用作赋值很少是一个好主意 - 当条件仅测试条件时代码更容易阅读和理解,而不是当这些条件也有副作用时。在这种情况下,您可以修复它,将 20 作为右侧的表达式:

const b = a === 1 ? 2 : 0;

唯一一次我认为条件内的赋值可能可能看起来比替代方案更干净是在手动迭代全局正则表达式以提取匹配组时(这不是使用条件运算符,但原理类似):

const regex = /\w(?=(\w))/g;
const str = 'foo';

let match;
while (match = regex.exec(str)) {
console.log(match[1]);
}

没有在 while 条件内赋值的替代方案是:

// Requires while(true):
const regex = /\w(?=(\w))/g;
const str = 'foo';

while (true) {
const match = regex.exec(str);
if (!match) {
break;
}
console.log(match[1]);
}

// A bit WET:
const regex = /\w(?=(\w))/g;
const str = 'foo';

let match = regex.exec(str);
while (match) {
console.log(match[1]);
match = regex.exec(str);
}

但这可能是基于意见的。

请注意,(ab)使用条件运算符替代 if/else缩小代码中很常见,但这完全没问题,因为缩小代码是'意味着被阅读,只被解析。这也是代码高尔夫中的一种有效技术。

如果你想在一个条件语句中赋值给多个变量,你可以使用解构:

const a = 689;
const [b, c] = a === 1 ? [2, 1] : [0, 3];
console.log(c);

或者,如果变量密切相关(这听起来很可能),使用对象(或数组)而不是多个独立变量可能会更好:

const a = 689;
const obj = a === 1 ? { b: 2, c: 1 } : { b: 0, c: 3 };
console.log(obj);

关于javascript - 在条件运算符内赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56052992/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com