欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JS中的数据类型转换

程序员文章站 2022-07-08 13:21:46
...

一、js中的数据类型
js中的数据类型分为基本数据类型引用数据类型。牵扯到的数据类型转换就有①基本数据类型的类型转换和②引用数据类型的类型转换——这里只讨论隐式转换
二、基本数据类型的类型转换
1、转成Number数字类型
(1)算数运算符:+ - * / %

console.log(1+true);//2

**原理:**调用Number()方法
1+Number(true)–>2
(2)自增自减运算符:++ –

var e=true;
console.log(++e);//2

**原理:**调用Number()方法
++Number(true);–>2
(3)比较运算符:> < >= <= == != === !==

console.log('2'>10)//false

**原理:**调用Number()方法
Number(‘2’)>10–>false
2、转成String字符串类型
使用算数运算符:+

console.log(1+'abc');//'1abc'

**原理:**调用String()方法
String(1)+‘abc’–>‘1abc’
3、转成Boolean布尔类型
使用逻辑非运算符:!

console.log(!1);//false

**原理:**调用Boolean()方法
!Boolean(1)–>false
三、引用数据类型的类型转换JS中的数据类型转换

(1)console.log([1,2]=='1,2');//true

**原理:**①调用valueOf()方法
②调用toString()方法
[1,2].valueOf()–>[1,2]
[1,2].toString()–>‘1,2’

(2)var a={};
     console.log(a.valueOf().toString());//"[object Object]"

注意:①对象的valueOf()方法是可以重写
②空数组的调用valueOf()方法会得到空数组
空对象调用valueOf()方法会得到空对象
③空数组调用toString()方法会得到空字符串
空对象调用toString()方法会得到’[object Object]’

(3)console.log([]==0);//true

**原理:**Number([].valueOf().toString())–>0

(4)console.log(![]==0);//true

**原理:**逻辑非!运算符的优先级很高。
!Boolean([])–>false–>0

(5)console.log([]==![])//true

**原理:**运算符左边 [].valueOf().toString()–>’’
运算符右边 !Boolean([])–>false
最后:Number(’’)==Number(false)//true

(6)console.log([]==[]);//false

**原理:**引用类型的对象的值存储在堆中,地址存储在栈中

(7)console.log({}==!{});//false

**原理:**运算符左边 {}.valueOf().toString–>’[object Object]’
运算符右边 !Boolean({})–>false
最后 Number(’[object Object]’) == Number(false);//false
NaN==0//false

(8)console.log({}=={});//false

**原理:**引用类型的对象的值存储在堆中,地址存储在栈中