解释javascript代码 - 三元IF运算符前的Tilde符号

时间:2013-05-30 20:22:27

标签: javascript node.js express

我正在快递中查看respons.js的代码并遇到了这段代码:

res.contentType =
res.type = function(type){
  return this.set('Content-Type', ~type.indexOf('/')
    ? type
    : mime.lookup(type));
};

我的问题是~运算符在type.indexOf()语句前面做了什么?它的用途是什么,何时使用?

2 个答案:

答案 0 :(得分:9)

这是一个bitwise NOT,虽然它在这里使用是非常不透明的。

它用于将-1结果从indexOf(即未找到字符串)转换为0,这是一个假值(自~-1 == 0起,并且0在布尔上下文中为false),它允许所有其他值保持真实。

它可以更清楚地写成(type.indexOf('/') != -1) ? ... : ...

用简单的英语说,“将-1结果(即,如果找不到/)从indexOf视为false;否则,处理结果作为true“。

答案 1 :(得分:0)

代字号是按位 NOT运算符,就像!逻辑 NOT运算符一样。您可能需要查看Mozilla Developer Network上运营商的documentation的完整用法和含义。