javascript是一种弱类型语言,用var声明变量,为变量赋值时会自动判断类型并进行转换;而强类型语言变量类型有多种,例如int char float boolean 等不同的类型相互转换有时需要强制转换

ECMAScript中有5中简单数据类型(也称为基本数据类型): Undefined、Null、Boolean、Number和String。还有一种复杂的数据类型Object(除了五大基础类型之外的都是Object,Object、Array和Function属于Object)

 

判断相等(==)时隐式类型转换转换顺序为:

对象 > 字符串 > 数字

数组转换字符串:[] 转换字符串结果为 “”;[1,2,3] 转换字符串结果为“1,2,3”;

Object转换字符串: var a = {} ,a转换字符串为 "[object Object]";即 a == "[object Object]"  为true

Function转换字符串: "function (){}" 即 var a = function(){};a ==  "function (){}" 为 true

布尔值 > 数字

如果有数字最终都会转换为数字比较(Number方法)

null == undefied

但这其中null做相等判断(==)时不转换,但是null == undefied为真,这是js规范的,不要试图通过转换数据类型来解释这个结论,ECMAScript 规范认为,既然 null 和 undefined 的行为很相似,并且都表示 一个无效的值,那么它们所表示的内容也具有相似性

posted on 2018-02-26 10:24  前端小透明  阅读(376)  评论(0编辑  收藏  举报