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上运营商的文档 ,了解其完整用法和含义。