JavaScript代码的解释 – 在三元IF运算符前面的Tilde符号
我正在快速检查respons.js的代码,并碰到这个代码:
res.contentType = res.type = function(type){ return this.set('Content-Type', ~type.indexOf('/') ? type : mime.lookup(type)); };
我的问题是~
操作符在type.indexOf()
语句前做了什么? 它的目的是什么,什么时候使用?
这是一个没有 ,虽然它在这里使用是相当不透明的。
它被用于将indexOf
(即未findstring)的-1
结果转换为0
,这是一个falsy值(因为~-1 == 0
,并且0
在布尔上下文中为false),它可以让所有其他的价值仍然是真实的。
它可以写得更清楚(type.indexOf('/') != -1) ? ... : ...
(type.indexOf('/') != -1) ? ... : ...
用简单的英文表示:“将indexOf
的-1
结果(即,如果/
未find)视为false
,否则将结果视为true
”。
代字符是按位 NOT运算符,就像!
是逻辑 NOT运算符。 您可能需要查看Mozilla开发者networking上运营商的文档 ,了解其完整用法和含义。