JavaScript-02

JavaScript-02

隐式转换的部分笔记


隐式转换

原始类型:undefined、string、number、Boolean、null、symbol

对象类型:object

-基本类型的转换

1.字符串加数字,数字就会转成字符串。数字加数字或字符串加字符串不需要转换。

​ 只要运算过程中有字符串,结果就是字符串

  var a = 1 + 2 + '3'//'出现了字符串'
  console.log(a, typeof a); // '33' string
  var b = 1 + 2 + 3;
  console.log(b, typeof b); // 6 number

2.数字减字符串,字符串转成数字。如果字符串不是纯数字就会转成NaN。字符串减数字也一样。两个字符串相减也先转成数字。

  let res = '2' - 3;
  console.log(res, typeof res);//-1 number
	
	let res2 = '2' - '3';
	console.log(res2, typeof res2);//-1 number

	let res3 = '2' - 'a';
	console.log(res3, typeof res3);//NaN number
-理解一个Array加上number或string会得什么(object + number或string会得什么)

1、如果输入的值已经是一个原始值,则直接返回它
2、否则,如果输入的值是一个对象,则调用该对象的valueOf()方法,
如果valueOf()方法的返回值是一个原始值,则返回这个原始值。
3、否则,调用这个对象的toString()方法,如果toString()方法返回的是一个原始值,则返回这个原始值。
4、抛出TypeError异常。(基本不会出现)

  let a = [4,3,2,1]
  let res = a.valueOf()// 首先不是原始值,则进行[4,3,2,1] object
  let res2 = res.toString()//4,3,2,1 string
  //前面两步只是为了知道如何得到下面的结果的
  
  let test = a + 100;//字符串和数字相加,转换成字符串
  console.log(test,typeof test);//4,3,2,1100 string  ---1100就是 1 拼接上100
  

object + number或string会得什么(不知道[object Object]怎么来的)

  let obj = {
    name:'KOBE',
    no: 24  
  }
  //现在想知道 obj + 111 = [object Object]111
 	//和上面步骤相同
  console.log(obj.valueOf());//{ name: 'KOBE', no: 24 } object不是原始类型
	console.log(obj.valueOf().toString())//[object Object] 是string
	//所以
	let res = obj + 111//也就是字符串加数字 结果为:[object Object]111

例子:

	[]+{}; //[object object] 

按照上面的步骤转换,可以得到预想的结果

	{}+[]; //0

但是这里和预想的不一样,是因为这里被浏览器解析成了{}; 剩下+[ ]就成了一元运算。[ ]的原值是””, 将””转化成Number结果是0。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值