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
其他的全部都转换为真
网友评论