【JS基础】类型转换——不同数据类型比较   小试牛刀 两个不同类型数据比较时隐式转换规则 Number() 强制转换成数值 String() 强制转换成字符串 Boolean() 强制转换成布尔类型

 

小试牛刀

  输出下列数据比较结果

【JS基础】类型转换——不同数据类型比较
 
小试牛刀
两个不同类型数据比较时隐式转换规则
Number() 强制转换成数值
String() 强制转换成字符串
Boolean() 强制转换成布尔类型

【JS基础】类型转换——不同数据类型比较
 
小试牛刀
两个不同类型数据比较时隐式转换规则
Number() 强制转换成数值
String() 强制转换成字符串
Boolean() 强制转换成布尔类型

  有没有全对呢?If the answer is "yes", congratulations!

两个不同类型数据比较时隐式转换规则

  1)  数字和字符串、布尔类型、数组进行比较时,字符串(或布尔类型、或数组)先转换为数字(Number),再进行比较;数组转数字请参看后文。

 

  使用 if(num) 和 if(num == true) 结果不一样。前者使用Boolean()转换Num, 后者使用Number转换true。

【JS基础】类型转换——不同数据类型比较
 
小试牛刀
两个不同类型数据比较时隐式转换规则
Number() 强制转换成数值
String() 强制转换成字符串
Boolean() 强制转换成布尔类型

【JS基础】类型转换——不同数据类型比较
 
小试牛刀
两个不同类型数据比较时隐式转换规则
Number() 强制转换成数值
String() 强制转换成字符串
Boolean() 强制转换成布尔类型

  

  2) 字符串和布尔类型比较,看完下面的代码我疯了。如果一定要给一个解释,那么一定是进行比较的两个数据同时经过Number()的洗礼后再进行比较。数组和布尔类型的比较也如此。

【JS基础】类型转换——不同数据类型比较
 
小试牛刀
两个不同类型数据比较时隐式转换规则
Number() 强制转换成数值
String() 强制转换成字符串
Boolean() 强制转换成布尔类型

【JS基础】类型转换——不同数据类型比较
 
小试牛刀
两个不同类型数据比较时隐式转换规则
Number() 强制转换成数值
String() 强制转换成字符串
Boolean() 强制转换成布尔类型

  3) undefined 除了和null进行非全等比较返回true,其它均返回false。null 除了和 undefined进行非全等比较返回true,其它均返回false。

  4) 数组(或对象)和字符串进行比较时,数组(或对象)会转换成字符串再进行比较。

【JS基础】类型转换——不同数据类型比较
 
小试牛刀
两个不同类型数据比较时隐式转换规则
Number() 强制转换成数值
String() 强制转换成字符串
Boolean() 强制转换成布尔类型

【JS基础】类型转换——不同数据类型比较
 
小试牛刀
两个不同类型数据比较时隐式转换规则
Number() 强制转换成数值
String() 强制转换成字符串
Boolean() 强制转换成布尔类型

Number() 强制转换成数值

  1) 字符串转数值,能解析的返回数值,不能解析的返回NAN(Not a Number)。




  2) 布尔值转数值

 

  3) Unfined 转数值

 

  4) null 转数值

 

  5) 对象转数值

 

   【JS基础】类型转换——不同数据类型比较
 
小试牛刀
两个不同类型数据比较时隐式转换规则
Number() 强制转换成数值
String() 强制转换成字符串
Boolean() 强制转换成布尔类型

  

String() 强制转换成字符串

  1) 原始数据类型转换为字符串,相当于直接把原数据用引号包起来。

 

  2) 对象转字符串

 【JS基础】类型转换——不同数据类型比较
 
小试牛刀
两个不同类型数据比较时隐式转换规则
Number() 强制转换成数值
String() 强制转换成字符串
Boolean() 强制转换成布尔类型

Boolean() 强制转换成布尔类型

  所有对象转换为Bool类型都为true,只有以下几个数值转换为Bool为false: undefined/null/0/NAN/""。

   undefined == false 返回 false, Boolean(undefined) = false.

   [] == false 返回true,  Boolean([]) = true.

【JS基础】类型转换——不同数据类型比较
 
小试牛刀
两个不同类型数据比较时隐式转换规则
Number() 强制转换成数值
String() 强制转换成字符串
Boolean() 强制转换成布尔类型

【JS基础】类型转换——不同数据类型比较
 
小试牛刀
两个不同类型数据比较时隐式转换规则
Number() 强制转换成数值
String() 强制转换成字符串
Boolean() 强制转换成布尔类型

结束语

若有不足之处,欢迎指正。

参考地址

[1] 数据类型转换.阮一峰. http://javascript.ruanyifeng.com/grammar/conversion.html

[2] http://www.jb51.net/article/34190.htm

小试牛刀

  输出下列数据比较结果

【JS基础】类型转换——不同数据类型比较
 
小试牛刀
两个不同类型数据比较时隐式转换规则
Number() 强制转换成数值
String() 强制转换成字符串
Boolean() 强制转换成布尔类型

【JS基础】类型转换——不同数据类型比较
 
小试牛刀
两个不同类型数据比较时隐式转换规则
Number() 强制转换成数值
String() 强制转换成字符串
Boolean() 强制转换成布尔类型

  有没有全对呢?If the answer is "yes", congratulations!

两个不同类型数据比较时隐式转换规则

  1)  数字和字符串、布尔类型、数组进行比较时,字符串(或布尔类型、或数组)先转换为数字(Number),再进行比较;数组转数字请参看后文。

 

  使用 if(num) 和 if(num == true) 结果不一样。前者使用Boolean()转换Num, 后者使用Number转换true。

【JS基础】类型转换——不同数据类型比较
 
小试牛刀
两个不同类型数据比较时隐式转换规则
Number() 强制转换成数值
String() 强制转换成字符串
Boolean() 强制转换成布尔类型

【JS基础】类型转换——不同数据类型比较
 
小试牛刀
两个不同类型数据比较时隐式转换规则
Number() 强制转换成数值
String() 强制转换成字符串
Boolean() 强制转换成布尔类型

  

  2) 字符串和布尔类型比较,看完下面的代码我疯了。如果一定要给一个解释,那么一定是进行比较的两个数据同时经过Number()的洗礼后再进行比较。数组和布尔类型的比较也如此。

【JS基础】类型转换——不同数据类型比较
 
小试牛刀
两个不同类型数据比较时隐式转换规则
Number() 强制转换成数值
String() 强制转换成字符串
Boolean() 强制转换成布尔类型

【JS基础】类型转换——不同数据类型比较
 
小试牛刀
两个不同类型数据比较时隐式转换规则
Number() 强制转换成数值
String() 强制转换成字符串
Boolean() 强制转换成布尔类型

  3) undefined 除了和null进行非全等比较返回true,其它均返回false。null 除了和 undefined进行非全等比较返回true,其它均返回false。

  4) 数组(或对象)和字符串进行比较时,数组(或对象)会转换成字符串再进行比较。

【JS基础】类型转换——不同数据类型比较
 
小试牛刀
两个不同类型数据比较时隐式转换规则
Number() 强制转换成数值
String() 强制转换成字符串
Boolean() 强制转换成布尔类型

【JS基础】类型转换——不同数据类型比较
 
小试牛刀
两个不同类型数据比较时隐式转换规则
Number() 强制转换成数值
String() 强制转换成字符串
Boolean() 强制转换成布尔类型

Number() 强制转换成数值

  1) 字符串转数值,能解析的返回数值,不能解析的返回NAN(Not a Number)。




  2) 布尔值转数值

 

  3) Unfined 转数值

 

  4) null 转数值

 

  5) 对象转数值

 

   【JS基础】类型转换——不同数据类型比较
 
小试牛刀
两个不同类型数据比较时隐式转换规则
Number() 强制转换成数值
String() 强制转换成字符串
Boolean() 强制转换成布尔类型

  

String() 强制转换成字符串

  1) 原始数据类型转换为字符串,相当于直接把原数据用引号包起来。

 

  2) 对象转字符串

 【JS基础】类型转换——不同数据类型比较
 
小试牛刀
两个不同类型数据比较时隐式转换规则
Number() 强制转换成数值
String() 强制转换成字符串
Boolean() 强制转换成布尔类型

Boolean() 强制转换成布尔类型

  所有对象转换为Bool类型都为true,只有以下几个数值转换为Bool为false: undefined/null/0/NAN/""。

   undefined == false 返回 false, Boolean(undefined) = false.

   [] == false 返回true,  Boolean([]) = true.

【JS基础】类型转换——不同数据类型比较
 
小试牛刀
两个不同类型数据比较时隐式转换规则
Number() 强制转换成数值
String() 强制转换成字符串
Boolean() 强制转换成布尔类型

【JS基础】类型转换——不同数据类型比较
 
小试牛刀
两个不同类型数据比较时隐式转换规则
Number() 强制转换成数值
String() 强制转换成字符串
Boolean() 强制转换成布尔类型

结束语

若有不足之处,欢迎指正。

参考地址

[1] 数据类型转换.阮一峰. http://javascript.ruanyifeng.com/grammar/conversion.html

[2] http://www.jb51.net/article/34190.htm