显式数据类型转换
Number()
转化成数字number
//特殊Number(undefined)—— NaNNumber(null)—— 0复制代码
parseInt()
- 转换成整数number(从数字位到非数字位截止)
- 取整 不四舍五入
parseFloat()
- 转换成浮点数number
- 从数字位到第一个不是点或者非数字位截止
String()
转换成字符串string
toString()
用法:str.toString()
- undefined和null不能用toString()
- toString(进制) 将转换成什么进制的
Boolean()
转换成布尔值Boolean
隐式数据类型转换
内部调用的都是显式类型转换的方法
递增递减运算符(前置、后置)的隐式转换规律
简言之,
++/--自增自减 +/-正负
先将参数进行Number()方法
具体如下:
-
如果包含的是有效数字字符串或者是有效浮点数字符串,则会将字符串转换(Number())为数值,再进行加减操作,返回值的类型是:number类型。
-
如果不包含有效数字字符串,则会将字符串的值转换为NaN,返回值的类型是:number类型。
-
如果是boolean类型,则先会把true或者false转换为1或者0,再进行加减操作,返回值的类型是:number类型。
-
如果是null类型,则先会把null转换为0,在进行加减操作,返回值的类型是:number类型。
-
如果是undefined,则先会把undefined转换为NaN,再进行加减操作,返回值的类型是:number类型。
-
如果是对象,则先会通过对象的valueOf()方法,进行转换,如果返回的是NaN,调用toString()方法,在进行前面的操作,返回值的类型是:number类型。(注:空数组[]会返回0,在进行加减操作,空对象则会返回NaN)。
四则运算 + - * / %
- 加法运算符+是双目运算符,只要其中一个是String类型,表达式的值便是一个String。
- 对于其他的四则运算,只有其中一个是Number类型,表达式的值便是一个Number。
- 对于非法字符的情况通常会返回NaN
1.字符串加数字,数字就会转成字符串。2.数字减字符串,字符串转成数字。如果字符串不是纯数字就会转成NaN。字符串减数字也一样。两个字符串相减也先转成数字。3.乘,除,大于,小于跟减的转换也是一样。复制代码
关系操作符的隐式转换规律
- 如果两个操作值都是数值,则直接比较大小。
- 如果两个操作值都是字符串,则字符串进行其Unicode编码进行比较。
- 如果一个操作值是数值,则另一个值转换为数值进行比较。
- 如果一个操作值是对象,则调用对象的valueOf()和toString()方法,然后再进行上述比较。 5.如果一个操作值是布尔值,则将布尔值转换为数值再进行比较。 (注:NaN和任何值都不相等,包括自己,同时它与任何类型比较都会返回false。)
相等操作符==和===的隐式转换规律:
- 布尔值、字符串和数值进行比较,会先将其转换为数值再进行比较。
- null和undefined比较是相等的,但不是全等的。
- NaN与任何值都不相等,都会返回false。
关于==1.undefined等于null2.字符串和数字比较时,字符串转数字3.数字为布尔比较时,布尔转数字4.字符串和布尔比较时,两者转数字复制代码
逻辑操作符中的隐式转换规律(注:只有undefined、null、NaN、0、空字符串会被转换为false,其余都为true):
逻辑操作符一般用于语句判断中。通过判断结果返回的值进行后面的语句操作。
- 逻辑非(!)操作符:首先会通过Boolean()函数将其操作值转换为布尔值,然后求反。
- 逻辑与(&&)操作符:如果第一个值经过Boolean()函数转换后为true,则返回第二个操作值,否则返回第一个操作值。如果有一个操作值为null这返回null,如果有一个操作值为undefined,则返回undefined,如果有一个值为NaN,则返回NaN。
- 逻辑或(||)操作符:如果第一个值经过Boolean()函数转换为false,则返回第二个操作值,否则返回第一个操作值。(注:逻辑操作符的运算为短路逻辑运算:前一个条件已经能够得出结果后续条件不再执行!)
判断语句
判断语句中的判断条件需要是Boolean类型,所以条件表达式会被隐式转换为Boolean。其转换规则同Boolean的构造函数。比如:
var obj = {};if(obj){ while(obj);}复制代码