可能是重复问题:
JavaScript 中的 !!(非非)运算符是什么?
我遇到了这段代码:
function printStackTrace(options) {
options = options || {guess: true};
var ex = options.e || null, guess = !!options.guess;
var p = new printStackTrace.implementation(), result = p.run(ex);
return (guess) ? p.guessAnonymousFunctions(result) : result;
}
我不禁想知道为什么要双重否定?是否有其他实现相同效果的替代方法?
(这段代码来自https://github.com/eriwen/javascript-stacktrace/blob/master/stacktrace.js.)
1 / 0 === Infinity
;1 / -0 === -Infinity
。(翻译:@gdoron stated that1 / 0 === Infinity
;1 / -0 === -Infinity
.) - Ry-if(guess)
和if(!!guess)
是等价的吗?除了展示变量是否为真或假之外,在 JavaScript 中还有哪些情况需要这样做?如果你只在条件表达式或 IF 语句中使用它,似乎这是一个不必要的步骤,因为对象的真实性总是会被求值。这种说法准确吗? - JoePCreturn !!guess;
,我可以看出先前的用法并不完全必要。(guess = !!option.guess
) - JoePC