什么是“!!' 语法在 JavaScript 中的意思
What does the '!!!' syntax mean in javascript?
我刚刚在其中一个 Windows 应用商店应用示例中遇到了以下代码行。
if (that.assets[asset].object === null || !!!that.assets[asset].object.canPlayType) {
它使用三重感叹号语法。我已经做了一些测试(我很确定我错过了一些东西),结果总是相同的一个!
。我认为它在某种程度上等同于===
和!==
......
谁能解释一下!!!
语法的含义?
我认为它有点等同于 === 和 !==...
不,它只是三个"不是"运算符,一个"不是不是"。
它和!(!(!(x)))
一样,总是等价于一个!x
。
这实际上没有任何用处。 !!
是一种将任何变量转换为其布尔表示的有点神秘的方法,但!!!
只是愚蠢的。您可以将任意数量的!
链接在一起,但它对任何事情都没有用。
!!是三重否定,所以它与!相同:
!true -> false
!!true -> true
!!!true -> false
这完美地回答了您的问题 https://stackoverflow.com/a/264037/1561922
!!x 可能正在反转布尔转换!!十:
var myBool = Boolean("false"); // == true
var myBool = !!"false"; // == true
"任何不为空的字符串都将计算为 true"
所以!!!"false"; // == false
这个问题不是开玩笑。Node.js(5 天前下载)在 Assert 中使用它.js例如:
function ok(value, message) {
if (!!!value) fail(value, true, message, '==', assert.ok);
}
assert.ok = ok;
编辑:我认为他们出于习惯性的原因这样做是出于代码可读性的原因,因为!value已经足够了。
编辑:节点更改了它。我不知道为什么我的 5 天前下载的 Node.js 版本仍然与 !!值,而不是 GitHub 中的 !value。
编辑:乔纳森在这里解释了原因。Nodejs.org的稳定版本v0.10.xx仍然有!!值,并且不稳定版本 v0.11.xx 具有 !value 修正。
相关文章:
- Javascript语法向设置发出sessionStorage值
- 函数的Javascript语法
- 如何定义const函数javascript(语法糖)
- Onclick不会启动..可能存在javascript语法问题
- 用jquery替换javascript语法
- 在Javascript语法中:和::和:::有什么区别
- 如何以编程方式查找javascript语法错误的位置
- 这个javascript语法有什么问题
- Chrome 中的 JSX/JavaScript 语法
- Javascript语法 - 我做错了什么
- 用于指定元素 ID 的正确 JavaScript 语法是什么
- 这是什么JavaScript语法
- 带有函数的 JavaScript 语法
- 剃刀中的javascript语法错误
- 解析云代码geoPoint查询Javascript语法
- 在Notepad++中更好地突出显示Javascript语法
- 通用Javascript语法查询
- Joomla2.5框架似乎干扰了javascript语法
- 点击切换Divs/JavaScript语法
- 用于将变量传递给函数的javascript语法