当前位置: 首页 > 面试题库 >

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

马欣德
2023-03-14
问题内容

我遇到了这段代码

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

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


问题答案:

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

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

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



 类似资料:
  • 可能重复: 什么是错误!!(不是)JavaScript中的运算符? 我遇到了这段代码 我不禁想知道为什么双重否定?有没有其他方法可以达到同样的效果? (代码来自https://github.com/eriwen/javascript-stacktrace/blob/master/stacktrace.js)

  • 本文向大家介绍JavaScript 双重否定(!! x),包括了JavaScript 双重否定(!! x)的使用技巧和注意事项,需要的朋友参考一下 示例 双重否定!!不是唯一的JavaScript运算符,也不是特殊的语法,而仅仅是两个否定的序列。它用于将任何类型的值转换为适当的值true或false布尔值,具体取决于它是true还是falsy。 首先否定任何值转换为false它是否truthy以及

  • 本文向大家介绍什么是双重支出?相关面试题,主要包含被问及什么是双重支出?时的应答技巧和注意事项,需要的朋友参考一下 回答:双倍支出被认为是数字现金计划的潜在缺陷,因为多次使用相同的数字令牌。令牌通常由可以轻松克隆的数字文件组成。比特币用户通过在区块链上付款时等待确认来保护自己免受双重支出欺诈;随着确认的增加,交易变得不可逆转。

  • 本文向大家介绍JavaScript中的startsWith()方法的重要性是什么?,包括了JavaScript中的startsWith()方法的重要性是什么?的使用技巧和注意事项,需要的朋友参考一下 要知道是使用特定字符开头的字符串还是使用indexOf()方法。但是在高级应用程序中,此方法已过时。因此,ES6为我们提供了startsWith()方法来执行那些高级任务。 在下面的示例中,使用Ind

  • 有人能解释这些代码吗?为什么它有<code>在那里?

  • 本文向大家介绍_without()方法在JavaScript中的重要性是什么?,包括了_without()方法在JavaScript中的重要性是什么?的使用技巧和注意事项,需要的朋友参考一下 _without()  此方法位于javascript的underscore.js库中。它带有两个参数,并从第一个数组中删除第二个数组中存在的元素。它不理会值是true 还是false,它一个接一个地检查每个