gpt4 book ai didi

javascript - 双感叹号?

转载 作者:IT老高 更新时间:2023-10-28 13:16:01 25 4
gpt4 key购买 nike

Possible Duplicate:
What is the !! (not not) operator in JavaScript?
What does the !! operator (double exclamation point) mean in JavaScript?

所以我在调试一些代码时遇到了这个问题:

var foo.bar = 0; // this is actually passed from another function, adding it for context

function(foo) {
var someVar = !!foo.bar;

if (foo.bar) {
// ..stuff happens
} else {
// .. something else happens
}
}

好的,我的问题是 !! 的意义何在?所做的只是使 0 === false

  1. boolean(foo.bar) 相比,使用它有什么好处吗?

  2. foo.bar 可以在 if 中进行评估,因为 0 === false 已经存在,那么为什么要进行转换呢? (someVar 不会在其他任何地方重用)

最佳答案

这会将值转换为 bool 值并确保 bool 类型

"foo"      // Evaluates to "foo".
!"foo" // Evaluates to false.
!!"foo" // Evaluates to true.

如果 foo.bar 被传递,那么它可能不是 0 而是其他一些虚假值。见以下真值表:

javascript 真值表

''        ==   '0'           // false
0 == '' // true
0 == '0' // true
false == 'false' // false
false == '0' // true
false == undefined // false
false == null // false
null == undefined // true
" \t\r\n" == 0 // true

Source: Doug Crockford

当涉及到 NaN 值时,Javascript 也变得非常奇怪。这是我能想到的唯一情况!行为与 === 不同。

NaN   ===  NaN     //false
!!NaN === !!NaN //true

// !!NaN is false

关于javascript - 双感叹号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9284664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com