资讯专栏INFORMATION COLUMN

【javascript系列】布尔类型及转换

wangxinarhat / 2979人阅读

摘要:基本值原始值原始的布尔类型有两个值和。创建布尔值的方式直接用字面量用函数,将其他任意值转换成对应的原始布尔值。使用两次非运算符,将其转换成对应的布尔类型。下面来看一些将其他类型转换成布尔类型的例子。

基本值(原始值)

原始的布尔类型boolean有两个值: falsetrue

> typeof false
"boolean"
> typeof true
"boolean"
创建布尔值的方式

直接用字面量

var a = false;
var b = true;

用Boolean函数,将其他任意值转换成对应的原始布尔值。

> a = Boolean()
false
> a = Boolean(true)
true

布尔类型与其他类型之间的转换 其他类型值转换成布尔值的对应关系

对应关系表如下所示:

其他类型值 转换成的布尔值
undefined false
null false
布尔值 不用转换
数字 0NaN转化成false,其他数字类型转换成true
字符串 只有空字符串""转换成false,其他都转换成true
对象 全部转换为true

根据上表可总结为,js中五中基本数据类型undefined、null、布尔型、数字和字符串,外加对象共六中类型中,只有undefinednull、布尔值中的false、数字中的0NaN,和字符串中的空字符串"",共计6种值被转换成false, 其余的都被转换成true

被转换成false的集合叫假值,被转换成true的集合就真值
由上可知,以下为假值。

undefined, null

false

0, NaN

""

所有其他的值,包括对象等都是真值。
因为undefinednull都是假值,所以我们通常用于判断一个变量x是否有值

if (x){
    // x 有值
}else{
    // x 无值
}

需要注意,上述判断会把所有的假值解释成“没有值”,而不仅仅是undefinednull.
如当x= 0时,上述判断会认为x没有值,实际上x是有值的,且为0.
所以上述判断要谨慎使用。

转换成布尔值的方法 自动转换

javscript中,凡是需要布尔值的地方,都可以提供任意类型的值,它们会自动被转化成相应的布尔值。例如条件表达式或逻辑表达式中。

手动转换

手动将其他类型的值转换成布尔值有以下三种方法

1. Boolean(value) //使用Boolean函数,此处作为一个普通函数被调用,而不是构造函数。
2. value ? true : false
3. !! value  //使用两次非运算符,将其转换成对应的布尔类型。

三种方法都很常用,其中最好使用Boolean(value)这个方法,直观又方便。

下面来看一些将其他类型转换成布尔类型的例子。

undefined

> Boolean(undefined)
false

null

> Boolean(null)
false

boolean

> Boolean(false)
false
> Boolean(true)
true

数字

> Boolean(0)
false
> Boolean(133)
true
> Boolean(NaN)
false

字符串

> Boolean("")
false
> Boolean("dd")
true
> Boolean(" ")    //注意,空格字符串不是空字符
true
> Boolean("false")
true

对象

所用的对象都转化成 true.

> Boolean([])
true
> Boolean({})
true
> Boolean(new Boolean(false))    //new Boolean(false)得到是一个boolean型object.
true
> Boolean(new Number(0))    //同上
true
> Boolean(new String(""))    //同上
true

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/91080.html

相关文章

  • javascript系列】Boolean对象Boolean函数

    摘要:返回对象的原始值。函数函数有两种调用方式作为普通函数调用,作为构造函数调用,函数作为普通函数调用语法参数可选,任意类型的值。 Boolean对象 Boolean对象是一个包装了布尔值的对象(实例). 查看Boolean对象初始值的方法 Boolean对象.valueOf() //所有Boolean实例都继承于 Boolean.prototype. Boolean原始值与Boo...

    BearyChat 评论0 收藏0
  • JavaScript基础系列--数据类型类型判断

    摘要:中有五种基本数据类型,以及一种复杂引用类型数据类型,中还细分了很多具体的类型,比如等等中又新增了一种类型。类型的数值范围是,超出这个范围的值为,可以使用函数来判断数值是否在范围内。 ECMAScript5中有五种基本数据类型:Undefined,Null,Boolean,Number,String,以及一种复杂(引用类型)数据类型:Object,Object中还细分了很多具体的类型,比...

    duan199226 评论0 收藏0
  • JavaScript疑难杂症系列-相等性判断

    摘要:同一类的复合类型值两个复合类型对象数组函数的数据比较时,不是比较它们的值是否相等,而是比较它们是否指向同一个对象。宽松相等双等号将执行类型转换原始类型的值原始类型的数据会转换成数值类型再进行比较。 事件这块知识点虽然是老生长谈的,但对于我来说多多整理,多多感悟,温故知新,每次看看这块都有不同的收获.(在这里我不会长篇大论,只会挑重点;具体的小伙伴们自行查找)参考:https://dev...

    Flink_China 评论0 收藏0
  • JavaScript疑难杂症系列-相等性判断

    摘要:同一类的复合类型值两个复合类型对象数组函数的数据比较时,不是比较它们的值是否相等,而是比较它们是否指向同一个对象。宽松相等双等号将执行类型转换原始类型的值原始类型的数据会转换成数值类型再进行比较。 事件这块知识点虽然是老生长谈的,但对于我来说多多整理,多多感悟,温故知新,每次看看这块都有不同的收获.(在这里我不会长篇大论,只会挑重点;具体的小伙伴们自行查找)参考:https://dev...

    2bdenny 评论0 收藏0

发表评论

0条评论

wangxinarhat

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<