数据类型及用法
ECMAScript中有5种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number和String。还有一种复杂数据类型----Object,还有Es6新增的Symbol类型。object本质上是由一组无序的名值对组成的。
typeof----用来检测给定变量的数据类型, 返回的值有
"undefined" --- 如果这个值未定义
"boolean" ---- 如果这个值是布尔值
"string" ---- 如果这个值是字符串
"number" ---- 如果这个值是数值
"object" --- 如果这个值是对象或者null
"function" --- 如果这个值是函数
undefined类型: 在使用var声明变量但未对其加以初始化时,这个值就是undefined。用typeof检测的时候,对已声明的和未声明的都会返回undefined值。
null类型: null类型是一个特殊的值,表示一个空对象指针,使用typeof操作符检测null值时会返回“object”。如果定义的变量准备在将来用于保存对象,那么最好将变量初始化为null而不是其他值。这样一来,只要直接检查null值就可以知道相应的变量是否已经保存了一个对象的引用。
boolean类型: boolean类型只有两个字面值: true 和 false。各种类型转成boolean的规则:
数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符串 ""(空字符串)
Number 任何非零数字值(包括无穷大) 0和NaN
Object 任何对象 null
Undefined undefined
number类型: number类型是用来表示整数和浮点数值(浮点数值再某些语言中也被称为双精度数值)。最基本的数值格式是十进制整数。除了十进制表示外,整数还可以通过八进制(以8为基数)或十六进制(以16为基数)的字面值来表示。其中,八进制字面值的第一位必须是零(0),然后是八进制数字序列(0~7).如果字面值中的数值超出了范围,那么前导零将被忽略,后面的数值将被当作十进制数值解析。在严格模式下八进制字面量无效。 十六进制字面值的前两位碧血是0x,后跟任何十六进制数字(0~9及A~F)。其中,字母A~F可以大写,也可以小写。
浮点数值:浮点数值为该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字。由于保存浮点数值需要的内存空间是保存整数数值的两倍,因此ECMAScript会不失时机地将浮点数值转换为整数值。显然,如果小数点后面没有跟任何数字,那么这个数值就可以作为整数值来保存。同样地,如果浮点数值本身表示的就是一个整数(如1.0),那么该值也会被转换为整数。极大或极小的数值可以用e表示法来表示。用浮点数值进行运算的时候注意,会有丢精度问题。
数值范围:ECMAScript能够表示的最小数值保存在Number.MIN_VALUE中,在大多数浏览器中,这个值是5e-324, 能够表示的最大数字保存在Number.MAX_VALUE中,这个值是1.7976931348623157e+308。如果某次计算的结果得到了一个超出JavaScript数值范围的值,那么这个数值将被自动转换成特殊的Infinity值。具体来说,如果这个数值是负数,则会被转换为-Infinity(负无穷),如果这个数值是正数,则会被转换成Infinity(正无穷)
NaN: 非数值,即一个特殊的数值,在一些数值运算中返回了不是数值的情况时,就会返回NaN.
String类型:String类型用于表示由零或多个16位Unicode字符组成的字符序列,即字符串。
Object类型:对象就是一组数据和功能的集合。Object类型是所有它的实例的基础。Object的每个实例都具有下列属性和方法:
constructor: 保存着用于创建当前对象的函数。对于前面的例子而言,构造函数(constructor)就是Object()
hasOwnProperty(propertyName): 用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。其中,作为参数的属性名(propertyName)必须以字符串形式指定(例如,o.hasOwnProperty("name"))
isPrototypeOf(object):用于检查传入的对象是否是传入对象的原型
propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in语句来枚举。与hasOwnProperty()方法一样,作为参数的属性名必须以字符串形式指定
toLocaleString(): 返回对象的字符串表示,该字符串与执行环境的地区对应。
toString(): 返回对象的字符串表示。
valueOf(): 返回对象的字符串、数值或布尔值表示。通常与toString()方法的返回值相同。