前端系统化学习【JS篇】:(四-3)基本数据类型之Boolean篇

前言

细阅此文章大概需要 7分钟左右
本篇中详细讲述详细讲述了:
Boolean布尔数据类型简述
其他类型值转换为布尔类型值的方法和各种情况
在==比较的过程中,数据类型转换的规则

如果有任何问题都可以留言给我,我看到了就会回复,如果我解决不了也可以一起探讨、学习。如果认为有任何错误都还请您不吝赐教,帮我指正,在下万分感谢。希望今后能和大家共同学习、进步。
下一篇会尽快更新,已经写好的文章也会在今后随着理解加深或者加入一些图解而断断续续的进行修改。
如果觉得这篇文章对您有帮助,还请点个赞支持一下,谢谢大家!

Boolean布尔数据类型

只有两个值 true/false

将其它类型的数据转换为布尔类型

【注意】:只有0、NaN、""、null、undefined五个值转换为false,其余都转换为true(而且没有特殊情况)!!!

两类方法:手动转换和隐式转换
手动转换:

Boolean([val])

!/!! !:取反(先转为布尔,再取反) !!:取反再取反,相当于只转换为布尔<=>Boolean

隐式转换:

条件判断 如果条件只是一个值,不是==/===/!=/>=/<=…等这些比较,则是要把这个值先转换为布尔值,然后再验证其真假
在前端领域混了这几年,总结了一套前端学习的精讲视频和学习路线,如果有对前端开发感兴趣的伙伴,不管你是想转行,或是大学生,还有工作中想提升自己能力的web前端党,欢迎大家的加入我的前端开发交流群:603985993 希望大家诚心交流!,与企业需求同步。好友都在里面学习交流,每天都会有大牛定时讲解前端技术!也可以关注我的微信公众号:【前端留学生】 每天更新最新技术文章干货。

1.Boolean([val])

console.log(Boolean(0));//=>false
console.log(Boolean(''));//=>false
console.log(Boolean(' '));//=>true
console.log(Boolean(null));//=>false
console.log(Boolean(undefined));//=>false
console.log(Boolean(NaN));//=>false
console.log(Boolean([]));//=>true
console.log(Boolean([12]));//=>true
console.log(Boolean(-1));//=>true

2 !/!!

!:取反(先转为布尔,再取反)
!!:取反再取反,相当于只转换为布尔<=>Boolean

console.log(!1);//=>false
console.log(!!1);//=>true

3.条件判断
如果条件只是一个值,不是==/===/!=/>=/<=…等这些比较,则是要把这个值先转换为布尔值,然后再验证其真假

if (1) {
    console.log('haha')
}
if('3px'+3){//=> '3px+3' => TRUE
    console.log('haha')
}
if('3px'-3){//=> NaN-3 => NaN =>FALSE
    console.log('haha')
}

在==比较的过程中,数据类型转换的规则

【类型一样时的几个特殊点】
{}{}:false (对象比较的是堆内存的地址)
[]
[]:false (数组也是一个对象,Array的实例)
NaN==NaN:false (NaN的特点)

【类型不一样的转换规则】
null == undefined 结果是true,但是转换成 =【null=undefined(全等于)】结果就是false (因为对象类型不一致),剩下null/undefined和其他任何数据类型值都不相等

    console.log(null == undefined) //=>true
    //都转换为数字0=>true
    console.log(null === undefined) //=>false

字符串对象,会把对象转换为字符串,再进行比较
除了这两种情况外,如果
两边数据类型不一致,都是需要转换为数字再进行比较

    //==练习题
    console.log([]==false);//true
    //空数组对象与布尔值进行比较,两边数据类型不一致,要转换为数字,则对象先判断原始值,若无则先转为字符串,在转换为数字,
    //[]->""->0//空字符串对应为0
    //false->0 
    //
    console.log(![]==false)//false
    //[]->""->0  !0->1 自身的类型转换优先级高
    //false->0
    //
    //对象==布尔 不是类型相同也不是字符串==对象,于是都先转为数字(隐式转换),再进行比较
   

作者:Hypnotize 链接:https://juejin.im/post/6869285451884724232 来源:掘金


版权声明:本文为BOM485480原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。