gpt4 book ai didi

javascript - ! JavaScript 中的运算符

转载 作者:可可西里 更新时间:2023-11-01 01:21:44 24 4
gpt4 key购买 nike

我现在很困惑! JavaScript 中的运算符。我的理解是!运算符仅对 bool 值进行运算。但是对我的一个评论 answers说它可以对任何东西进行操作并返回一个 bool 值,这在我做了一些测试后恰好是真的。

alert(!undefined); //true
alert(!function(){}); //false
alert(!{}); //false
alert(!null); //true
alert(!()); //crash
alert(!"false"); //false
alert(!false)​;​​​​​​​​​​​​ //true​​​​​​​​​​​​​​​​​​

有人可以帮我概括 ! 的行为吗?运营商。

编辑

更令人困惑的东西:

​alert( new String() == ""); //true
alert(!""); //true
alert(! new String()); //false

如何?

最佳答案

! 会按照您的想法进行操作:将 true 变为 false,反之亦然。奇怪的行为与 Javascript 如何将任何字面意思转换为 truefalse 有关。

http://11heavens.com/falsy-and-truthy-in-javascript

就像在 C 中一样(只有更糟)所有值都可以提升为 true 或 false。您想要的可搜索术语是“真实”和“虚假”,或“真实”和“虚假”。 Truthy 表示某物转换为真,falsy 表示某物转换为假。除 nullundefined0""NaN 外,所有值均为真值, 和... false

这个链接有更多有趣的例子:

http://www.sitepoint.com/javascript-truthy-falsy/

而且这个网站真的很喜欢用这里有趣的行为来做病态的事情:

http://wtfjs.com

另请注意,== 确实努力使事物具有可比性,而 === 仅在事物不可比时返回 false . Crockford 在 Javascript: The Good Parts 中建议不要完全使用 ==

关于javascript - ! JavaScript 中的运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10710770/

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