zoukankan      html  css  js  c++  java
  • javascript 中的 true 或 false

    JavaScript中奇葩的假值

    通常在以下语句结构中需要判断真假

    1. if分支语句
    2. while循环语句
    3. for里的第二个语句

    1

    2

    3

    4

    5

    6

    7

    if (boo) {

    // do something

    }

    while (boo) {

    // do something

    }

    JavaScript中有 6 个值为“假”,这六个值是

    1. false
    2. null
    3. undefined
    4. 0
    5. '' (空字符串)
    6. NaN

    这里面 false 本身是布尔类型,其它 5 个则不是。

    除了这 6 个外,其它均为“真” ,包括对象、数组、正则、函数等。注意 '0'、'null'、'false'、{}、[]也都是真值  。

    虽然这六个值都为“假”,它们之间并非都相等

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    console.log( false == null )      // false

    console.log( false == undefined ) // false

    console.log( false == 0 )         // true

    console.log( false == '' )        // true

    console.log( false == NaN )       // false

    console.log( null == undefined ) // true

    console.log( null == 0 )         // false

    console.log( null == '' )        // false

    console.log( null == NaN )       // false

    console.log( undefined == 0)   // false

    console.log( undefined == ''// false

    console.log( undefined == NaN) // false

    console.log( 0 == '' // true

    console.log( 0 == NaN ) // false

    对于“==”,以上得出下列结论

    • false 除了和自身比较为 true 外,和 0,"" 比较也为 true
    • null 只和 undefined 比较时为 true, 反过来 undefined 也仅和 null 比较为 true,没有第二个
    • 0 除了和 false 比较为 true,还有空字符串 ''" 和空数组 []
    • 空字符串 '' 除了和 false 比较为 true,还有一个数字 0

    当然,对于这一切,查看下规范是最踏实的,ES里的ToBoolean阐述了所有情形

    相关:

    JavaScript中的隐式类型转换

  • 相关阅读:
    maven学习(四)maven的生命周期
    maven学习(六)依赖、聚合、继承
    Koa2学习(三)GET请求
    Koa2学习(二)async/await
    Koa2学习(一)环境搭建
    实现一个简易的express中间件
    js生成页面水印
    使用 dva + antd 快速开发react应用
    使用ab 进行并发压力测试
    python3 使用http.server模块 搭建一个简易的http服务器
  • 原文地址:https://www.cnblogs.com/suizhikuo/p/4960258.html
Copyright © 2011-2022 走看看