我在 express 中检查 respons.js 的代码并遇到了以下代码:
res.contentType =
res.type = function(type){
return this.set('Content-Type', ~type.indexOf('/')
? type
: mime.lookup(type));
};
我的问题是~
操作员在type.indexOf()
语句前面做什么?它的目的是什么,什么时候使用?
我在 express 中检查 respons.js 的代码并遇到了以下代码:
res.contentType =
res.type = function(type){
return this.set('Content-Type', ~type.indexOf('/')
? type
: mime.lookup(type));
};
我的问题是~
操作员在type.indexOf()
语句前面做什么?它的目的是什么,什么时候使用?
它是按位 NOT,尽管它在这里的使用非常不透明。
它用于将-1
结果从indexOf
(即未找到字符串)转换为 a 0
,这是一个假值(因为~-1 == 0
, 并且0
在布尔上下文中为假),并且它让所有其他值保持为真。
它可以写得更清楚(type.indexOf('/') != -1) ? ... : ...
用简单的英语,它说:“将-1
结果(即,如果/
未找到)indexOf
视为false
;否则,将结果视为true
”。
波浪号是按位!
非运算符,就像逻辑非运算符一样。您可能需要查看Mozilla Developer Network 上的操作员文档以了解其完整用法和含义。