前端面试系列之二 类型转换

1.布尔类型

0 或 +0、 -0,NaN、 "" 、 false、undefined、null这几个是false ,其他的全都是true。
if(a && b)的正确理解方式是: a && b 进行表达式求值后,然后在转换为Boolean类型。&& 是短路语法,求值后不一定是一个Boolean类型。
||短路表达式
1、只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。
2、只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。
这种为短路原理: 知道了前面第一个的结果就知道后的输出,如果为第一个为:true,则取第一个的值,如果第一个为false,则取第二个的值。
&&
1、只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;
2、只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;

2. 其他基本类型转化为字符串

一个字符串+ 一个数字,或者字符串,或者其他的东西,转换为字符串,例如: "" + Infinity、 "" + 1
转换为数字的时候,+号是个隐式转换,会执行Number(),这里包含能转换成功的和不能。 +null 、+false、 + "" // 0、 +undefined // NAN 、 + '1x' // NaN

3. 引用类型转化为数字和字符串

转化为数字 1.优先调用valueof方法,看其返回是否是基本类型,如果是,转化为数字,返回。
2. 否则,调用tostring 方法,看其返回结果是否是基本类型,如果是,转化为数字,返回。
转化为字符串: 1.优先调用toString ,看其返回结果是否是原始类型,如果是,转化为字符串,返回。
2.否则,调用valueof 方法,看其返回结果是否是原始类型,如果是,转化为字符串,返回。
3.其他报错

4.==

1,null和undefined,相等。
2,数字和字符串,转化为数字再比较。
3,如果有true或false,转换为1或0,再比较。
4,如果有引用类型,优先调用valueOf。
5,其余都不相等。
首先调用对象自身的valueOf()方法,如果返回基本类型的值,则用Number构造函数进行转换。如果valueOf()返回的不是基本类型的值,则再调用toString()方法,如果返回基本类型的值,值用Number构造函数进行转换。如果toString()返回的不是基本类型的值,则抛出异常。

5.隐式转化

5.1 在所有加减乘除需要数字类型的地方,js会自动使用Number() 进行转换。'1'-'2' // -1; 1+ '2' //加号,其他类型和字符串相加,都会转换成字符串。 '1' - true //0 ; '1' * {}// NaN ;'1'-'A' //NaN;
5.2 转换为字符串 字符串自动转换主要表现为字符串的拼接,字符串和其他类型用加号(+)拼接时,其他类型都自动转换为字符串。 'a' +{} // a[object object]
5.3 转换为布尔值 当任意需要布尔类型的地方,系统都会自动调用Boolean () 构造函数将值转换为boolean 类型。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值