不使用三元运算符和 if ,如何优雅地切换变量的值?
RT,维护一个老项目,经常看到这种垃圾代码,有没有比三元运算更优雅的实现呢
// 比如说变量a有1和2两个值,当它初始为1则赋值2,初始为2则赋值1let a = 1
// 垃圾1
if (a == 1) {
a = 2
} else {
a = 1
}
// 优雅1
a = a == 1 ? 2 : 1
回答
逻辑上 写个函数,用函数调用就清晰明了
一味追求 精简 和 技巧 只能让代码变得难以看懂和维护。
容易维护的代码 才是真的 好代码
所谓技巧高超,最后都变成被人骂的 祖传代码
针对题目a = a - 1 || 2
具体问题具体应对
a = a % 2 + 1
或者位运算符(当然不熟悉的人可能看不明白)
a ^= 3
没看明白题意。交换
是什么意思
const aa = new Map([ ['1', 2],
['2', 1]
])
const val = (key) => {
return aa.get(key)
}
console.log(val('1'))
我也来抖个机灵
a = [, 2, 1][a]
js设计模式之策略模式
// 辣鸡2(a == 1 && (a=2)) || (a=1)
list(a,b) = array(b,a)
知乎上看过一些奇技淫巧:
针对2^32
位以下的正整数,用与或加密再解密——
a ^= b;b ^= a;
a ^= b;
对于整数,同样的思路,任何可逆运算都能组合一堆答案出来,但是需要注意数值溢出,比如用加减法——
a += b;b = a - b;
a -= b;
ES6
数组的解构赋值——
[a, b] = [b, a];
这种倒是通用的,也还算优雅。
然而大多数这样的代码除了炫技之外并没什么用,不如 if...else
那么直观。
以上是 不使用三元运算符和 if ,如何优雅地切换变量的值? 的全部内容, 来源链接: utcz.com/a/62365.html