JS数据类型、数据类型检测、数据类型转换

数据类型

JS数据类型分类

基本数据类型:Number、String、Boolean、Undefined、Null、Symbol(ES新增)

引用数据类型:Object(包括Array、Function)

注意:逻辑上讲,null值表示一个空对象指针,这也是给typeof传一个null会返回"object"的原因

在定义将来要保存对象值的变量时,建议使用null来初始化,不要使用其他值。这样,只要检查这个变量的值是不是null就可以知道这个变量是否在后来被重新赋予了一个对象的引用。

任何时候,只要变量要保存对象,而当时又没有那个对象可保存,就要用null来填充该变量。这样就可以保持null是空对象指针的语义,并进一步将其与undefined区分开来。

Number类型中的NaN

NaN含义:”不是数值“,本来要返回数值的操作失败了,(0/0)会返回NaN;

NaN不等于任何值,NaN == NaN//false

数据类型存储

栈:计算机为原始数据类型开辟的存储空间,String、Number、Boolean、Undefined、Null

堆:计算机为引用类型开辟的一块内存空间,object

数据类型检测

typeof与instanceof

typeof返回值有七种

  • "number"表示值为数值

  • "string"表示值为字符串

  • "boolean"表示值为布尔值

  • "undefined"表示值未定义

  • "object"表示值为对象(而不是函数)或null

  • "function"表示值为函数

  • "symbol"表示值为符号

注意:

1、typeof是操作符不是函数,不需要使用参数,但可以有参数

2、typeof null返回的是一个"object",特殊值null被认为是一个对空对象的引用

instanceof

通过原型链来检测,返回一个布尔值

A instanceof B

A是否是B的实例对象

数据类型转换

隐式转换

不经程序员调用函数,程序隐式自动对数据类型进行转换

1、if判断

if(null)//false
if(" ")//true
if("")//false

if判断中应该传入一个布尔值(Boolean)

当传入的值是其他类型的时候,程序会隐式调用Boolean()函数将传入的值转换为布尔值

if(null)->if(Boolean(null))->if(false)

2、==判断

==会判断两边的值是否相等

===除了判断值以外,还会判断数据类型

null == undefined -> Boolean(null) == Boolean(undefined) -> false == false -> true
null == undefined -> Number(null) == Number(undefined) -> 0 == 0 -> true

null === undefined 为false,因为数据类型不同

3、逻辑运算符&&和||的隐式转换

1 && null -> Boolean(1) && Boolean(null) -> true && false -> false

显示转换

程序员显示调用函数,将一个数据类型的值转换为其他数据类型的值

1、其他数据类型转为布尔值Boolean

String类型:非空字符串为true,""空字符串为false

Number类型:非零数值(包括无穷值)为true,0、NaN为false

Object类型:任意对象(包括{})为true,null为false

Undefined类型:这个类型只有一个值undefined,为false

2、其他数据类型转为数值Number

Number()中传入各类型的参数

布尔值:true转为1,false转为0

数值:直接返回

null:返回0

Undefined:返回NaN

字符串:空字符串返回0,包含十进制或其他进制的数字返回对应数值,字符串中包含任何其它字符返回NaN

parseInt()函数

parseInt()函数更专注于字符串是否包含数值模式。字符串最前面的空格会被忽略,从第一个非空格字符开始转换。如果第一个字符不是数值字符、加号或减号,parseInt()立即返回NaN。这意味着空字符串也会返回NaN(这一点跟Number()不一样,它返回0)。如果第一个字符是数值字符、加号或减号,则继续依次检测每个字符,直到字符串末尾,或碰到非数值字符。比如,"1234blue"会被转换为1234,因为"blue"会被完全忽略。类似地,"22.5"会被转换为22,因为小数点不是有效的整数字符。

parseInt()函数

parseInt()函数更专注于字符串是否包含数值模式。字符串最前面的空格会被忽略,从第一个非空格字符开始转换。如果第一个字符不是数值字符、加号或减号,parseInt()立即返回NaN。这意味着空字符串也会返回NaN(这一点跟Number()不一样,它返回0)。如果第一个字符是数值字符、加号或减号,则继续依次检测每个字符,直到字符串末尾,或碰到非数值字符。比如,"1234blue"会被转换为1234,因为"blue"会被完全忽略。类似地,"22.5"会被转换为22,因为小数点不是有效的整数字符。

3、其他类型转换为字符串

调用toString()方法(null和undefined没有这个方法)

调用String()方法,null返回"null",undefined返回"undefined"

使用+操作符

  • 23
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值