有没有一种非常简单的方法可以在 javascript 中切换布尔值?
到目前为止,除了编写自定义函数之外,我得到的最好的就是三元:
bool = bool ? false : true;
bool = !bool;
这在大多数语言中都是如此。
如果您不介意将布尔值转换为数字(即 0 或 1),则可以使用 按位异或赋值运算符。像这样:
bool ^= true; //- toggle value.
let inDynamicEditMode = true; // Value is: true (boolean)
inDynamicEditMode ^= true; // Value is: 0 (number)
inDynamicEditMode ^= true; // Value is: 1 (number)
inDynamicEditMode ^= true; // Value is: 0 (number)
这对我来说比在每行中重复变量更容易扫描。
此方法适用于所有(主要)浏览器(以及大多数编程语言)。
让我们看看实际效果:
var b = true;
console.log(b); // true
b = !b;
console.log(b); // false
b = !b;
console.log(b); // true
无论如何,没有比你现在拥有的更短的方法了。
bool = bool != true;
其中一个案例。
我正在寻找一种具有相同功能的切换方法,但它将
null
或 undefined
的初始值“切换”为 false
。
这是:
booly = !(booly != false)
这是一个老问题,但我认为 ES6 更新会很好。
通常我们想要一个可以在不破坏代码的情况下处理所有事情的切换开关。
我们可以使用
null
或 undefined
值的初始值作为 false
。
const boolToggler = b => !(b ?? false)
let foo
console.log('foo:', foo) // undefined
foo = boolToggler(foo)
console.log('foo:', foo) // true (assumes undefined as 'false')
foo = boolToggler(foo)
console.log('foo:', foo); // false
let fee = null
console.log('fee:', fee) // null
fee = boolToggler(fee)
console.log('fee:', fee) // true (assumes null as 'false')
let faa = true
console.log('faa:', faa) // true
faa = boolToggler(faa)
console.log('faa:', faa); // false
bool === tool ? bool : tool
如果您希望该值在
tool
(另一个布尔值)具有相同的值时保持 true
在您可能将 true / false 存储为字符串的情况下,例如在 localStorage 中,协议在 2009 年翻转为多对象存储,然后仅在 2011 年翻转回字符串 - 您可以使用 JSON.parse 来解释为布尔值苍蝇:
this.sidebar = !JSON.parse(this.sidebar);
我一直喜欢布尔值,但现在我使用二进制来方便和调试。您可以使用 de consept
!key : ++key: --key
进行切换,如果您处于任何异步函数中或任何时候发生错误或 false true,该值将泄漏出 0(零)/ 1(一),您可以触发警报稍后调试。
对布尔值执行 NOT 运算
bool = !bool;