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

cal*_*tie 8 javascript node.js express

我在express中检查了respons.js的代码并遇到了这段代码:

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

我的问题是~运营商在type.indexOf()声明面前做了什么?它的用途是什么,何时使用?

aps*_*ers 9

虽然它在这里使用是非常不透明的,但这是一个按位.

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

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

用简单的英语,它说,"治疗-1结果(即,如果/没有被发现),从indexOffalse;否则,结果视为true".

  • 实际上,`~type.indexOf('/')`表示"`type`包含字符串`/`". (3认同)