是否有一个真正简单的方法来切换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)
对我来说,这比在每行中重复变量更容易扫描。
此方法适用于所有(主要)浏览器(和大多数编程语言)。
bool = bool != true;
其中一个案例。
bool === tool ? bool : tool
如果tool(另一个布尔值)具有相同的值,则该值为true
tool
让我们来看看实际情况:
var b = true; console.log(b); // true b = !b; console.log(b); // false b = !b; console.log(b); // true
无论如何,没有比你现在拥有的更短的路了。
我正在寻找一个切换方法,做同样的,但“;toggles"null或undefined到false的初始值。
null
undefined
false
下面就是:
booly = !(booly != false)
在这种情况下,你可能会将true / false存储为字符串,例如在localStorage中,协议在2009年翻转到多对象存储&然后在2011年才翻回字符串-你可以使用JSON。解析来解释布尔值:
this.sidebar = !JSON.parse(this.sidebar);
我一直喜欢布尔值,但现在为了方便和调试,我使用二进制。你可以使用de consept !key : ++key: --key来切换,如果你在任何异步函数中,或者任何时候发生错误或false true,值将泄漏出0(0)/ 1(1),你可以在以后触发警报进行调试。
!key : ++key: --key
这是一个老问题,但我认为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