js数据类型相互转化原理

数据类型的分类

ECMAScript数据类型具有动态性,即松散性。

基本数据类型
  1. Undefined:未对变量进行初始化或初始化赋值为undefined,实质上undefined值派生至null
  2. Null:当变量值引用类型为null时
  3. Boolean:当变量值为true/false或自动转化为布尔类型时
  4. Number:当变量的值为整数、浮点数时
  5. String:当变量值为0或多个16位Unicode字符组成的字符序列
复杂数据类型
  1. Object:变量值为一组数据和功能的集合

数据类型的自动转化

  1. 其它数据类型转化为布尔类型
数据类型转换为true的值转换为false的值
Booleantruefalse
String任何非空字符串“”(空字符串)
Number任何非零数字值(包括无穷大)0与NaN
Object任何对象null
Undefined不适用undefined

2.其它数据类型转化为数值类型(注:计算机默认存储为二进制,输出为十进制)

①、整数的转化(各进制中开头注明符号不区分大小写):

  • 十进制→十进制(不处理)

  • 八进制→十进制(以0开头,若字面值中的数值超出范围,前导零将被忽略,且编译器会报错,例059→59)

  • 十六进制→十进制(以0x开头,若字面值中的数值超出范围,编译器报错且不会显示出值)

  • 二进制→十进制(以0b开头,若字面值中的数值超出范围,编译器会报错且不会显示出值)
    ②、浮点数值的转化(浮点数值的存储空间是整数值存储空间的两倍)

  • 科学计数法:用于处理那些极大或极小的数值;例:
    3.125e7==31250000;3e-7=0.0000003;浮点数值的最高精度为17位数字,可以使用将float→double解决精度溢出问题。
    ③、ECMAScritp能够存储的极致数值保存在Number.MIN_VALUE =5e-324 (-Infinity负无穷)与Number.MAX_VALUE=1.7976931348623157e+308(Infinity正无穷) 。
    ④、NaN:表示一个特殊数值的非数值,用于表示一个本来要返回数值的操作数但未返回数值的情况(这样将不会抛出错误)。特点:任何涉及NaN的操作都会返回NaN;NAN与任何值都不相等,包括NaN
    ⑤、转换规则:

  • Boolean中,true→1 false→0

  • 如果是数字,只是简单的传入和返回

  • null→0

  • undefined→NaN

  • 如果字符串中只包含数字(前面带正号与负号的情况),转换为十进制,忽略前导的零

  • 如果带有浮点格式,将其转化为对应的浮点数值,忽略前导零

  • 有效的十六进制→十进制

  • 空字符串转换为0

  • 字符串中包含其它特殊字符将转换为NaN

  • 如果是对象,先调用valueOf办法,如果转换结果为NaN则将调用toString办法。
    3.其它数据类型转换为字符串类型

  • 默认将五种基本数据类型转换为相同类型的字符串类型

  • 复杂数据类型:
    数组 : 将数组的数据内容,转化为字符串,执行拼接操作
    对象 : 任何的对象,都转化为 字符串 [object Object] , 执行拼接操作
    函数 : 将函数所有的代码,都转化为字符串,执行拼接操作
    –逆战班

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值