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;

}

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


(代码来自https://github.com/eriwen/javascript-stacktrace/blob/master/stacktrace.js)


子衿沉夜
浏览 497回答 3
3回答

慕哥9229398

它转换为布尔值。第一个取反!一次,转换值如下:undefined 至 truenull 至 true+0 至 true-0 至 true'' 至 trueNaN 至 truefalse 至 true所有其他表达式 false然后另一个!再次否定它。简明投地布尔,完全等同于ToBoolean仅仅是因为!被定义为它的否定。但是,这里没有必要,因为它仅用作条件运算符的条件,条件运算符将以相同的方式确定真实性。

MYYA

var x = "somevalue"var isNotEmpty = !!x.length;让我们把它分解成碎片:x.length   // 9!x.length  // false!!x.length // true因此,它用于将“ truethy” \“ falsy”值转换为布尔值。以下值与条件语句中的 false等效:假空值未定义空字符串""(\ '')数字0数量NaN所有其他值都等于true。

慕少森

双重否定将“真实”或“虚假”值转换为布尔值true或false。大多数人都熟悉使用真实性作为测试:if (options.guess) {    // runs if options.guess is truthy, }但这并不一定意味着:options.guess===true   // could be, could be not如果您需要将“真实”值强制为真实的布尔值,这!!是一种方便的方法:!!options.guess===true   // always true if options.guess is truthy
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript