在阅读时,我在代码中发现了一个奇怪的!!~
:https://github.com/LearnBoost/mongoose/blob/master/lib/document.js#L678
Document.prototype.isModified = function (path) {
return !!~this.modifiedPaths.indexOf(path);
};
我读过What is the !! (not not) operator in JavaScript?和How to: The ~ operator?;为什么作者在这里使用!!~
?
我试过了:
!!~1 // -> true
!!~0 // -> true
!!~-1 // -> false
!!~-2 // -> true
当数字为false
时,似乎只有-1
。这样对吗?为什么不检查号码不是-1
还是>=0
?