js隐式转换与强制转换汇总

一、隐式转换

隐式转换的概念:在运算中,如果两个数据的数据类型不同,js会自动将某个数据转换成和另一个数据相同的数据类型,这种转换无需用户操作,所以称之为隐式转换。

1、加法中的隐式转换

  1. 数字和布尔值做运算,布尔值true会转换成数字1,false会转换成数字0,然后再做加法。
  2. 数字和字符串做加法,数字会隐式转换成字符串,两者做字符串拼接。
  3. 字符串和布尔值做加法,布尔值会转换成字符串,做字符串拼接。
var a = "abc";
var b = true;
var c = false;
console.log(a+b); //"abctrue"
console.log(a+c); //"abcfalse"

2、减乘除取模运算中的隐式转换

  1. 布尔值在和数字之间做减乘除取模的时候,布尔值会隐式转换成数字true是1,false是0。
  2. 字符串做减乘除取模时,会尝试转换成数字,如果字符串中全是数字,则将字符串转换成数字类型,如果字符串中有非数字字符,则运算结果返回NaN。

二、强制转换

1. parseInt()

  1. 尝试将字符串转换成数字类型,整数型。
  2. 如果字符串的内容是纯数字,如“33” => 33
  3. 如果字符串的内容是数字开头,如“33px” => 33
  4. 字符串的内容非数字开头,如“px33” => NaN
  5. 布尔值直接是NaN
let str01 = '33'
let str02 = '33px'
let str03 = 'px33'
let str04 = true

console.log(parseInt(str01))   //33
console.log(parseInt(str02))   //33
console.log(parseInt(str03))   //NaN
console.log(parseInt(str04))   //NaN

2. Number()

  1. 将数据转换成数字。
  2. 内容是纯数字的字符串,会转换成数字
  3. 布尔值会转换成数字
  4. 字符串中有非数字 就抓换成NaN

3. Boolean()

  1. 将数据类型转换成布尔值。
  2. 转换成fasle的六种情况:false,undefined,0,空字符串(“”),NaN,null
  3. 转换成true的几种情况:true,非0数字,非空字符串,对象,数组,对象集合。
  4. 注意:即便是空数组、空对象依旧转化为true
 let str01 = false
 let str02 = ''
 let str03 = 0
 let str04 = undefined
 let str05 = NaN
 let str06 = null
 let str07 = {}
 let str08 = []

 console.log(!!str01) //false
 console.log(!!str02) //false
 console.log(!!str03) //false
 console.log(!!str04) //false
 console.log(!!str05) //false
 console.log(!!str06) //false
 console.log(!!str07) //true
 console.log(!!str08) //true

4. !取反

! 可将变量转换成boolean类型,false,undefined,0,空字符串(“”),NaN,null取反都为true,其余都为false。常用于逻辑运算。而使用 !! 即可将变量转换成相应的boolean类型,类似于Boolean()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值