javascript的原始类型(primitive type)
有5种primitive type,分别是Undefined、Null、Boolean、Number 和 String。 Null类型: null类型也只有一个值,即null。undefined实际上是从null派生而来的,因此ECMAScript把他们定义为相等的。 alert(null == undefined); //output "true" alert(null === undefined); //output "false" ==时它会自动转化为null,所以返回true。不过如果用严格比较符===,不发生转化,将返回false。 尽管两个值相等,但是他们的含义却不一样,undefined是声明了变量但为对其初始化时赋予该变量的值,null则用于表示尚未存在的对象。如果函数要返回的是对象,那么找不到该对象时,返回的通常是null。 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
js七种数据类型:Sting Object null undefined Array Boolean Number
js五种基本类型:String Boolean Number null undefinedtypeof六种返回格式:'string' 'number' 'object' 'function' 'boolean' 'undefined'不像我们在学习JAVA时,被告知JAVA是完全OOP的语言:class是一类具有共同特点的物体的抽象,object是某个class下具体的一个实现,Object类是所有类的顶层父类,对Java的认知是从类与对象开始的;Javascript则不然,它是从类型(type)开始,在各类语言中遇到的number,string, boolean, object, function,array等都属于类型。
这些类型在JS中分为两大类:原生类型与对象类型,原生类型包括:number,string, bool, null, undefined;剩下的非原生类型对象都属于对象类型,包括:object, array, function等,那这里的object专指具有属性(attribute)的对象,在Firebug中的代码示例如下:
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
转 boolean 规则:
null, undefined, "", 0, -0, NaN 转换成布尔值是false, 剩下的全转化 true;
转 number 规则:
string '2.3.1' => NaN;
null, '', false, [] ==>> 0;
undefined => NaN;
object => x Number(object.toString())
隐式类型转换 ==
1、有布尔值则转换为数值
2、字符串数值,则字符串转换为数值
3、只有一个是对象,则toString() valueOf()
4、null == undefined
5、NaN != NaN
6、对象==,比较内存地址
在逻辑运算表达式中,非布尔值会进行转换为布尔值。算上false一共有6个值(false,""(空字符串)、0和NAN、null、undefined)会转化为false.称这6个值为falsy值:
特别注意的是typeof('0')=='string',即'0'是一个字符串对象,对对象进行逻辑运算结果为true
数据类型 | 转换为true的值 | 转换为false的值 |
Boolean | true | false |
String | 任何非空字符串 | 空字符串 |
Number | 任何非零数字值(包括无穷大) | 0和Null |
Object | 任何对象 | null |
Undefined | Undefined |
console. log (([])? true : false ); console. log (([]== false ? true : false )); console. log (({}== false )? true : false ) |