avaScript数据类型分为六种类型,分别是null、undefined、boolean、string、number、object。对象是引用类型,其他五种是基本类型或原始类型。我们可以使用typeof方法来打印某个类型属于哪个类型。比较不同类型的变量时,必须先改变类型,称为类型转换,类型转换也称为隐式转换。隐式转换通常与运算符加法、减法、乘法、除法、等于、小于、大于等一起发生。typeof'11'//stringtypeof(11) //number'11'<4//false基本类型的转换先说加减乘除:1.给一个字符串加一个数,并且数字将被转换为字符串。2.数字减去字符串,字符串变成数字。如果字符串不是纯数字,它将被转换为NaN。从字符串中减去数字也是如此。两个字符串相减也是先转换成数字。3、乘、除、大于、小于、减的转换是一样的。//隐式转换+-*==///+10+'20'//2010//-10-'20'//-1010-'one'//NaN10-'100a'//NaN//*10*'20'//200'10'*'20'//200///20/'10'//2'20'/'10'//2'20'/'一' //NaN让我们再看一组==。1.undefined等于null2.字符串和数字比较时,字符串都转为数字3.数字和布尔值比较时,布尔值转为数字4.字符串和布尔值比较时,都转为数字//==未定义==空;//真'0'==0; //true,stringtonumber0==false;//true,布尔值到数字'0'==false; //为真,均为Numbernull==false; //falseundefined==false; //false引用类型的转换基本类型之间的比较比较简单。引用类型和基本类型的比较比较复杂。首先要把引用类型转换成基本类型,然后按照上面的方法进行比较。Boolean的引用类型全部为真。比如空数组,只要是对象,就是引用类型,所以[]为真。使用valueOf()或toString()将引用类型转换为数字或字符串;对象本身继承了valueOf()和toString(),你也可以自定义valueOf()和toString()。根据不同的对象,使用继承的valueOf()转换为字符串、数字或自身,对象必须用toString转换为字符串。一般对象默认调用valueOf()。1.当一个对象转换为数字时,调用valueOf();2.当一个对象转换为字符串时,调用toString();这次给大家推荐一个免费的学习圈,里面总结了移动应用网站开发,css,html,webpack,vuenodeangular,面试资源等等。获取资料???对web开发技术感兴趣的同学欢迎加裙子:???582735936???,不管你是小白还是大牛我都欢迎,还有大牛整理的一套高效学习路线和教程免费分享给你,视频资料每天更新。最后祝大家早日学业有成,拿到满意的offer,快速升职加薪,走上人生巅峰。先看下面的例子:0==[];//真,0==[].valueOf();->0==0;'0'==[];//假,'0'==[].toString();->'0'=='';2==['2'];//真,2==['2'].valueOf();->2=='2'->2==2;'2'==[2];//真,'2'==[2].toString();->'2'=='2';[]==![];//true,[].valueOf()==!Boolean([])->0==false->0==0;当对象转换为数字时,调用valueOf(),在此之前是调用toString();所以我猜valueOf方法是这样的。所以把上面的例子0==[]改成下面这样比较合理。不管怎样,最后[]都会被转换为0。
