JavaScript: what is the meaning of “!!”?
本问题已经有最佳答案,请猛点这里访问。
我刚碰到这个
1 | var strict = !! argStrict; |
我忍不住想知道,
来源:http://phpjs.org/functions/in_array/
它强制类型成为真正的布尔值,而不是"truthy"值。实例:
1 2 3 | var a = (1 === true) // comes out as false because 1 and true are different types and not exactly the same var b = ((!!1) === true) // comes out as true because the 1 is first converted to a boolean value by means of negation (becomes false) and then negated a second time (becomes true) |
这是一个懒惰的解析示例。
如果您有一个变量(例如字符串),并且希望将其转换为布尔值,则可以这样做:
1 2 3 | if (myString) { result = true; } |
这表示,如果my string未定义、为空、为0、为布尔值false,则将我的字符串设置为布尔值true…
但它更快,更酷的方式是双重打击它:
1 | result = !! myString; |
其他例子包括……
1 2 3 4 5 | //Convert to number result = +myString; //Bang Bang Wiggle - coerces an indexOf check into a boolean result !!~myString.indexOf('e'); |
它返回一个
它的基本意思是"转换为布尔值"。
它否定了两次,所以它