JavaScript中的!!有什么用途?

4

可能是重复问题:
JavaScript中的!!(非非)运算符是什么?

我刚看到一个使用了 !! 的代码,对我来说意味着逻辑非非。

  app.isArray = Array.isArray || function(object) {
    return !!(object && object.concat
              && object.unshift && !object.callee);
  };

使用!!和不使用!!有什么不同?

(我的猜测是!!会将结果转换为布尔类型。如果我的猜测正确,为什么会这样?)


@WesleyMurch 谢谢。我试过搜索,但没有找到。也许我需要改进我的搜索关键词。 :) - Mifeng
2
不,这样的东西很难搜索到。我找到的唯一方法是通过这里:https://dev59.com/Y2kw5IYBdhLWcg3w8O-o(任何人都可以自由投票以重新开放它!) - Wesley Murch
1个回答

6

!! 可以将双重内容转换为布尔值。以下是一些示例:

!! true === true
!! false === false

1
Wesley Murch已经发布了重复的链接。那么为什么还要发表答案呢? - Ashwin Singh
5
在看到那条评论之前,我已经在我的手机上写好了答案。 - rekire
谢谢。现在我知道!(sth)将始终返回布尔类型false(如果sth为true)。!(!sth)将把false转换为true :) - Mifeng
2
请注意,在您的示例中,!! 是多余的,因为操作数已经是布尔值了... - nnnnnn
重复的回答并没有回答 OP 的问题。做得好,rekire 提供了答案。 - user1260310
当数据值可能为空且期望的数据类型为布尔值时,我会使用它。!!null -> false - slopeofhope

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接