javascript数据类型隐式转换

javascript数据类型隐式转换

一、函数类

isNaN()改函数会对参数进行隐式的Number()转换,如果转换不成功则返回true

    var a="abc";
    document.write(isNaN(a)); 输出true
    var b="123";
    document.write(isNaN(b)); 输出false

alert()对输出的内容隐式地转换为字符串

二、运算符类

2.1算术运算符 - * / %
如果操作数不是数值,将会隐式地调用Number()函数,按照这个这个函数的转换规则进行转换,如果转换不成功这个表达式返回NaN

    var num=123;
    var str="字符串";
    document.write(num-str); 输出NaN

+如果操作数都是数值,然后进行相加。任何数据类型和字符串相加,都会隐式调用它们的toString(),然后返回它们拼接的结果。
如果操作数都是布尔值,那么由Number()转换,false为0,true为1,进行相加

    var c=true;
    var d=false;
    document.write(c+d); 输出1

2.2关系运算符

< > <= >= == === != !==

关系运算符的操作数可以是任何类型,如果操作数不是数值类型将会隐式地转换
(1)运算的结果都是布尔值
(2)都是字符串的时候,会隐式转换成ASCII码再进行比较
(3)都是数值的时候会正常比较
(4)当一个是字符串,另一个是数值的时候,会把字符串尝试地转化成Number数值类型,然后进行比较。
如果不能转换成数值类型,则会返回NaN,然后返回false
(5) undefined==null
(6)如果两个都是数值型字符串,那么它们隐式转换成ASCII码,且只是比较第一个
(7)如果一个数值和一个布尔值信息比较,会把布尔值隐式地转换为数值再进行比较,true为1,false为0
2.3等性运算符== !=
等性运算符会对操作数做隐式的转换后再进行比较
(1)如果其中至少有一个是布尔值,那么会隐式地调用Number()函数进行转换,然后进行比较
(2)如果一个为字符串,另一个为数值,也会隐式地调用Number()函数对字符串进行转换,如果转换不成功则返回false

    var e="123";
    var f=123;
    document.write(e==f); 输出true

(3) undefined==null
(4)==
(a)比较字符串的时候是比较它们的ASCII码是否相等
(b)比较两个数值的时候是比较它们的数值是否相等
(c)比较函数的时候是判断它们的位置是否相等
2.4逻辑运算符
A.放在表达式里面进行判断
B.给变量赋值

var a=b && c;

如果一个运算数是对象,另一个隐式地调用Boolean()函数,返回该对象
如果两个运算数都是对象,返回第二个对象
如果某个运算数是null,返回null
如果某个运算数是 NaN,返回NaN
如果某个运算数是undefined,发生错误

var a=b || c;

如果一个运算数是对象,并且该对象左边的运算数隐式地调用Boolean(),且值为false时,则返回该对象
如果两个运算数都是对象,返回第一个对象
如果最后一个运算数是null,并且其他运算数值均为false,返回null
如果最后一个运算数是NaN,并且其他运算数均为false,返回NaN
如果某个运算数是undefined,发生错误

三、语句类

if(表达式){

}else{

}
while(表达式){
}

if语句里面的表达式、while语句里面的表达式和三元表达式会隐式地调用Boolean()函数,按照这个函数的转换规则转换为相应的布尔值

转换为假:"",0,NaN,undefined,false
其他的全部都转换为真

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容