一尘不染

JavaScript中的双重否定(!!)-目的是什么?[重复]

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;
}

忍不住想知道为什么双重否定?有没有其他方法可以达到相同的效果?


阅读 308

收藏
2020-05-01

共1个答案

一尘不染

它转换为布尔值。第一个取反!一次,转换值如下:

  • undefinedtrue
  • nulltrue
  • +0true
  • -0true
  • ''true
  • NaNtrue
  • falsetrue
  • 所有其他表达式 false

然后其他人!再次否定它。简明投地布尔,完全等同于ToBoolean仅仅是因为!被定义为它的否定。但是,这里没有必要,因为它仅用作条件运算符的条件,条件运算符将以相同的方式确定真实性。

2020-05-01