为什么〜运算符在Javascript中为函数返回-1?
问题描述:
~(function() {}).toString();
是绝对有效的JavaScript语法,我看到它返回-1
。我知道~
不是运营商。例如~5
= ~0101
这意味着基数2中的1010
和十进制中的10
。为什么〜运算符在Javascript中为函数返回-1?
console.log(~(function() {}).toString());
但什么是在这种情况下如何解释呢?
也许~NaN
返回-1
。
答
从this blog: The Great Mystery of the Tilde(~)摘自:
波浪号是一个操作符做一些事情,你通常认为不会有任何目的。它是一个一元运算符,它的右边表达式对其执行这个小算法(其中N
是代字号右边的表达式):-(N+1)
。见下面的一些样品。
console.log(~-2); // 1
console.log(~-1); // 0
console.log(~0); // -1
console.log(~1); // -2
console.log(~2); // -3
说明:https://www.joezimjs.com/javascript/great-mystery-of-the-tilde/ –
这个,如果你同'NaN'会尝试这样做,就像'NaN'一样,它会得到相同的结果。 – Krusader