在JavaScript中,false、0和其他形式的数字等的零(“-0”、“+0”、“0.0”和“0x0”)、null、undefined、NaN、“document.all”、“[]”、“{}”、“""”(空字符串)等值都是假值。
本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。
JavaScript中的假值
false 0 和其他形式的数字等的零 -0 、 +0 、 0.0 和 0x0 (信贷RBT为十六进制形式)
- `”“,’‘ 和 ```-长度的字符串0 null undefined NaNdocument.all (仅在HTML浏览器中)这是一个奇怪的。 document.all 是一个假对象,带有 typeof as undefined 。它是IE11之前的IE中的Microsoft专有功能,并作为“蓄意违反JavaScript规范”而添加到HTML规范中,因此为IE编写的网站在尝试访问时不会中断document.all.something。这是虚假的,因为它 if (document.all) 曾经是在条件注释之前检测IE的流行方法。请参阅为什么 document.all 虚假?详情
“ Falsey”仅表示JavaScript的内部 ToBoolean 函数return false 。 ToBoolean underlies !value,value ? ... : …;和if (value)。这是其官方规范(2018年工作草案)(自1997年第一个ECMAscript规范以来唯一的变化就是添加了ES6的Symbols,它们始终是真实的):[]
{}
""(空字符串)
与==(宽松平等)的比较
值得一谈的是falsy值与的松散比较 == ,这会使用 ToNumber() 并可能由于潜在的差异而引起混淆。它们有效地分为三类:
false, 0, -0, "", '' 彼此匹配 == 例如 false == "" , '' == 0 因此 4/2 - 2 == 'some string'.slice(11) ; null, undefined 与 == 例如,n ull == undefined 但是 undefined != false 这也是值得一提的是,虽然 typeof null 回报 'object',null 是不是一个对象,这是一个长期的错误/怪癖这是不固定的,以保持兼容性。它不是一个真正的对象,并且对象是真实的( document.all 当在HTML中实现Javascript时会发生“恶意违反” ) NaN 不匹配任何东西,用 == 或 === ,甚至没有自己
例如 NaN != NaN , NaN !== NaN , NaN ! = false , NaN != null 对于“严格相等”( === ),没有这样的分组。只有 false === false 。这就是为什么许多开发人员和许多样式指南(例如standardjs)偏爱 === 且几乎从不使用的原因之一 == 。
真正的价值观 == false
“ Truthy”仅表示JavaScript的内部 ToBoolean 函数return true 。Javascript的应用怪癖要知道的(和另一个很好的理由,更喜欢 === 了 == ):这是可能的值是truthy( ToBoolean 回报true),而且还 == false 。
你可能会认为这 if (value && value == false) alert('Huh?') 是不可能发生的逻辑上的可能性,但对于以下情况,它将是可能的:
"0" 和 '0' -它们是非空字符串,这是正确的,但Javascript会将==数字与等效字符串匹配(例如 42 == "42" )。因为 0 == false ,如果 "0" == 0 , "0" == false 。 new Number(0) 并且 new Boolean(false) -它们是真实的对象,但是==看到它们的值 which == false 。 0 .toExponential() ; -数值等于的对象 0 任何类似的构造都会为你提供虚假的值,并包装在真实的类型中 [] , [[]] 和 [0] (感谢cloudfeet对JavaScript的平等表链接)一些更真实的价值
这些只是一些人可能期望是虚假的价值观,但实际上是真实的。
-1 和所有非零负数 ' ' , " " , "false" , 'null' … 所有非空字符串,包括只是空格串来自的任何内容typeof,总是返回非空字符串,例如:
typeof null ( 'object' 由于长期存在的错误/怪癖而返回字符串)
typeof undefined (返回一个字符串 'undefined' )任何对象( document.all 浏览器中的“恶意违反”除外;请记住,null尽管有typeof其他建议,但这实际上不是对象)。包含:
{}
[] function(){} 或 () => {} (任何功能,包括空功能) Error 以及 Error 任何正则表达式 用 new (包括 new Number(0) 和 new Boolean(false) )创建的任何内容 任何符号
true,1,"1" 和 [1] 回报 true 相比彼此 == 。【推荐学习:javascript高级教程】
以上就是JavaScript中什么值是假值的详细内容!
查看更多关于JavaScript中什么值是假值的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did32160
JavaScript中什么值是假值
阅读:56次