JavaScript变量与数据类型(三)

因为 JavaScript 是弱类型的语⾔言,所以类型转换发生的⾮非常频繁。类型转换分为两种:隐式转换和强制 转换。
隐式转换即程序⾃自动进行的类型转换;
强制转换即我们手动进行的类型转换。

强制转换
强制转换是需要我们手动的去调⽤一些⽅方法来实现的类型转换。JavaScript 中提供了了下列几种⽅法来实现强制转换:
转换为数值类型: parseInt(string) 、 parseFloat(string) 、 Number(mix)
转换为字符串串类型: toString(radix) 、 String(mix)
转换为布尔类型: Boolean(mix)
Number 的强制转换parseInt(string)
解析一个字符串,并返回一个整数。解析规则:

  1. 忽略略字符串前⾯面的空格,直至找到第一个⾮空字符;
  2. 如果第一个字符是0,则忽略;
  3. 如果第一个字符不是数字或者正负号,返回NaN;
  4. 如果第一个字符是数字,则继续解析直至字符串解析完毕或者遇到一个非数字字符为⽌;
  5. 如果是以 0x 开头,则将其当作十六进制来解析;
parseInt('12345px');
parseInt('hello parseInt');
parseInt('');
parseInt('020');
parseInt('11.22.33');
parseInt(123.3);
// 12345
// NaN
// NaN
// 20
// 11 // 123
 parseFloat(string)

解析一个字符串,并返回一个浮点数。解析规则与 parseInt 基本相同,但也有点区别:
6. 字符串中的第一个小数点.符号是有效的;
7. 如果字符串包含一个可解析为整数的数,则返回整数值⽽不是浮点数值;

  parseInt('12345px');
parseInt('hello parseInt');
parseInt('');
parseInt('020');
parseInt('11.22.33');
parseInt(123.3);
// 12345
// NaN
// NaN
// 20
// 11.22
// 123.2
 Number(mix)

解析任意数据类型,并返回一个有效数值。转换规则:
8. 布尔值:true 和 false 分别被转换为 1 和 0; 2. 数值:返回本身;
9. null:返回0;
10. undefined:返回NaN;
11. 字符串:遵循以下规则:
空字符串转换为 0 ; 如果引号内是有效合法数字,则转换为对应的数值; 其他情况转换为 NaN ;
String 的强制转换
mix.toString():解析除了 undefined 和 null 之外的所有类型,并返回对应字符串串。
String(mix):解析任意数据类型,并返回一个字符串串。
Boolean 的强制转换 Boolean(mix)

 Number('12345px');
Number('hello Number');
Number('');
Number('020');
Number('11.22.33');
Number(123.3);
// NaN
// NaN
// 0
// 20
// NaN
// 123.2
 let str = 123;
console.log( str.toString() );
console.log( String(str) );

解析任意数据类型,并返回⼀一个布尔值。

除了了 false 、 “” 、 0 、 NaN 、 null 、 undefined 这六个转换为 false ,其他任何值都转换为 true 。
隐式转换
隐式转换是程序自动进行的类型转换,各种类型间互相转换都符合下⾯面的规则:
Boolean 的隐式转换
在 JavaScript 中,存在隐式转换为 Boolean 值的情况主要分为两种:
在 if 、 while 等需要条件判断的语句句中; 在 ||、&&、! 逻辑语句句中;
上述两种情况中,当语句只有单个变量量时,都会先将变量量转换为 Boolean 值,然后再进行判断。 转换规则同 Boolean() 方法。

Number 的隐式转换
在 JavaScript 中,存在隐式转换为 Number 值的情况主要分为两种:
在算术运算中;
在比较运算中;
上述两种情况中,当参与运算的值不是 Number 时,都会先转换为 Number 值,然后再做运算(其中 + 有两种情况)。
算术运算例⼦:
分析:
“10” 转换为 10
null 转换为 0 udnefined 转换为 NaN [‘5’] 转换为 5
true 转换为 1
比较运算例⼦:
分析:
true 转换为 1
“0” 转换为 0
“10” 转换为 10
null 转换为 0
![] 先转换为 false,false 再转换为 0,[] 转换为 0
String 的隐式转换
在 JavaScript 中,存在隐式转换为 String 值的情况只有一种:就是与 String 值做 + 字符串串拼接。 任何数据类型在与 String 类型的值做 + 运算时,都会隐式转换为 String 值。

 "10" - 1;
null * 10;
undefined / 2;
['5'] * 2;
true + 1;
// 9
// 0
// NaN
// 10
// 2
  2 == true
0 == "0"
"10" > 5
null < 0
[] == ![]
// false
// true
// true
// false
// true
                         
   1 + "5";     // "15"
true + "";   // "true"

特殊情况
NaN 做算术运算时,结果都是 NaN ;
NaN 做比较运算时,和任何值都不相等;
undefined == null 的比较结果为 true ,除此之外, undefined 和 null 与其他任何值做 == 时结果都为 fasle ;
今天的分享就到这了了,下次再⻅见!

 NaN == NaN
0 == null
NaN + 10
// false
// false
// NaN

学习更多IT知识请关注公众号“朗沃IT学习”

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值