我在我正在处理的代码中经常看到以下代码风格;
var1 == true && (var2 = true)
经过一些测试,我认为可以归结为:
if (var1 == true) {
var2 = true;
}
这是正确的还是还有更多内容?为什么有人会使用它,因为可读性大大降低,因为你乍一看它只是对两个变量的检查。所以你真的必须开始查看单或双等号以及括号在哪里,这有点,你知道......只是好奇在这里......
最佳答案
是的,这是等价的。据我所知,它的名字叫short-circuit evaluation ,描述了这样一个事实:一旦整个布尔表达式的一个部分为假,解释器就会返回 false。
事实上,在您的示例中,它确实降低了可读性。但我认为它只是你工具箱中的另一个工具,当你觉得它有用时你可以使用它。考虑以下因素:
return user && user.name;
这是我倾向于使用它的一个例子。在这种情况下,我认为它实际上比
更具可读性if (user) {
return user.name;
} else {
return undefined; // or null or something alike
}
更新
当我认为这种结构有用时,我想给你另一个例子。想想像 user => user.name
这样的 ES6 箭头函数。它不需要 {}
打开正文,因为它只有一行。如果您希望将某些内容记录到控制台(用于调试),您最终会得到
user => {
console.log(user); // or something alike
return user.name;
}
您不妨使用较短的变体
user => console.log(user) || user.name
由于登录控制台后console.log
返回undefined
,因此返回user.name
。
关于JavaScript: var1 == true && (var2 = true),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44704846/