8

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

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

我的问题是~操作员在type.indexOf()语句前面做什么?它的目的是什么,什么时候使用?

4

2 回答 2

9

它是按位 NOT,尽管它在这里的使用非常不透明。

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

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

用简单的英语,它说:“将-1结果(即,如果/未找到)indexOf视为false;否则,将结果视为true”。

于 2013-05-30T20:28:59.890 回答
0

波浪号是按位!非运算符,就像逻辑非运算符一样。您可能需要查看Mozilla Developer Network 上的操作员文档以了解其完整用法和含义。

于 2013-05-30T20:27:49.283 回答