JS基础-数据类型-null、undefined和boolean

源链接:https://wangdoc.com/javascript/index.html

null和undefined

两者都表示“没有”,但仍有区别,null突出变量的值是不存在的,undefined突出变量没有被定义。

一般情况下,判断对象是否包含某个属性的时候都会用到undefined

var tmp = {a: '1'}
tmp.b // undefined

另外null和undefined在转换为Boolean时都会转变为false,所以判断对象的某个属性是否存在时可以直接这么用

if(!tmp.b) { console.log('属性不存在') }

null和undefined的异同

相同点
  • 两者直接转换为Boolean都会转换为false
  • 两者都表示“没有”这一概念
不同点
  • 转换为Number时会有不同

      Number(null) // 0
      5 + null // 5
      Number(undefined) // NaN
      5 + undefined // NaN
    
  • undefined表示变量没有被定义,null表示变量的值现在为空

boolean

与其他编程语言相同,真假两个状态:true、false。

以下运算会返回boolean

  • 前置逻辑运算符: !
  • 相等运算符:===!====!=
  • 比较运算符:>>=<<=

如果JS调用方法时预期的某个输入应该是boolean,那么无论输入什么类型的变量都会自动转换为boolean。

其他值转换为boolean值的转换规则为:除以下6个值会被转换为false,其他值都会被转换为true(注:[]{}也会被转换为true

  • undefined
  • null
  • false
  • 0
  • NaN
  • ""或’’(空字符串)

关于返回boolean的运算符

!会先将后面先转换为boolean再取反,如果后面接多个逻辑记得加()

===!==是对于原生类型(null、undefined、string、number、boolean)严格的相等,等号两边的类型不同或值不同均会返回false。但于对Array和Object的比较有些特殊,这一块我看到对象的时候再说。

==!=>>=<<=使用时有以下规则:

  • 符号两边中有null和undefined时

    • 符号两边均为null或undefined时,先把null和undefined转换为boolean再比较

        null == null // true
        null == undefined // true
        undefined == undefined // true
      
    • 符号一边为null或undefined,另一边number时, 如下。>,<时null可视为0,其他情况null为空值。undefined在任何情况下都会返回false

        1 > null // true
        -1 < null // true
        0 == null // false
        0 != null // true
        1 > undefined // false
        0 == undefined // false
      
    • 符号一边为null或undefined,另一边string时,除!=会返回true,其他符号都会返回false(空字符串也是这样)

        'a' == null // false
        'a' != null // true
        'a' > null // false
        'a' < null // false
      
  • 符号两边不含null或undefined时

    • 符号左右为同一类型时

      • 如果是number直接比较
      • 如果是string,==!==可以比较内容,>>=<<=会取string第一个字符串的ascii码比较,''空字符串为0
    • 符号一边为boolean时

      • 另一边如果为number,可视boolean为0、1
      • 另一边如果是string,!=时返回true,其他均返回false
    • 符号两边为string和number时

        'a' !== 100 // true
        'a' == 100 // false
        'a' > 100 // false
        'a' < 100 // false
      
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值