JavaScript中的所有假值

JavaScript中的所有假值,第1张

JavaScript中的所有假值

Javascript中的假值

  • false
  • 0
    和其他形式的数字等的零
    -0
    0.0
    0x0
    (信贷RBT为十六进制形式)
    - `”“,’‘ 和 ```-长度的字符串0
  • null
  • undefined
  • NaN
  • document.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
    相比彼此
    ==


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/4928642.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-12
下一篇2022-11-12

发表评论

登录后才能评论

评论列表(0条)

    保存