第二章 基本语法---数据类型
基本数据类型:undefined、Null、Boolean、Number、String
复杂数据类型:Object(本质上是一组无序的名值对组成)
3、1 typeof操作符
检测给定变量的数据类型
结果:
- ”undefined”---如果这个值未定义
- ”boolean”---如果这个值是布尔值
- ”string“---如果这个值是字符串
- ”number”---如果这个值是数值
- “object”---如果这个值是对象或者null
- “function”---如果这个值是函数
例子:
typeof null ---返回 object
typeof null ---返回 function---Safari5以及之前的版本 Chrome7之前的版本
instanceof
instanceof 是用来判断 A 是否为 B 的实例,表达式为:A instanceof B,如果 A 是 B 的实例,则返回 true,否则返回 false。 在这里需要特别注意的是:instanceof 检测的是原型。
3、2 undefined类型
Undefined类型只有一个值,就是undefined。在使用var声明变量但对其进行初始化,那这个变量就是undefined,
要注意 使用typepof操作符:对于未初始化和未声明的变量都返回undefined值
3、3 Null类型
Null 类型是第二个只有一个值的数据类型,--null,
从逻辑角度来看,null值表示一个空对象指针,如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null,而不是其他值。
Undefined 值是派生自null值的 --》undefined==null //true
3、4 Boolean 类型
Boolean 类型,该类型只有两个字面值:true 和false。且区分大小写,True和False都不是Boolean值,只是标识符。
任何数据类型都可以转换为Boolean值,调用Boolean()函数。具体规则如下:
n/a 就是不适用,undefined不适用转化为true。
3、5 Number类型
这种类型使用IEEE754格式来表示整数和浮点数值。为了支持各种数据类型,ECMS-262定义了不同的数值字面量格式。:
- 最基本的数值字面量格式:十进制。
- 八进制。八进制字面值的第一位必须是0,然后是八进制的数字序列(0-7)。八进制字面量在严格模式下是无效的,回导致支持的JavaScript引擎抛出错误。
- 十六进制。十六进制字面值的前两位必须是0x,后面跟任何十六进制数字(0-9及A-F)。其中字母A-F可以大写,也可以小写。
- 浮点数
就是该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字。最高的精度是17位小数。保存浮点需要的内存空间是保留整数值的两倍。对于极大、极小值,可以用e表达法表示浮点数值。
- 数值范围
大部分浏览器:最小值-》5e-324
最大值:
超出范围,正数转化为Infinity(正无穷)
负数转为-Infinity(负无穷)
注:Infinity不能够参与计算的数值
使用isFinite()函数,可以确定一个数是否是有穷,它在参数位于最小和最大数值之间时返回true。
- NaN
即非数值,是一个特殊的数值,用于表示一个本来要返回数值的操作数未返回数值的情况。
非同寻常的特点:
(1)任何涉及NaN的操作(例如NaN/10)都会返回NaN,这个特点在多步计算中有可能导致错误。
(2)NaN与任何值都不相等,包括NaN本身。
根据这些特点,定义了isNaN()函数:确认参数时候是数值。在接收到一个值之后,会尝试将这个值转换为数值。
- 数值转换
有3个函数可以把非数值转换为数值:
Number()、parseInt()、parseFloat()
- Number()
转型函数Number()可以用于任何数据类型,而另外两个函数则专门用于字符串转换为数值。
处理整数更常用方法是parseInt()函数、与parseFloat()函数。
parseInt()有两个参数,第二个是:转换时使用的基数(即多少进制)
parseFloat()函数只有一个参数,不能解析十六进制与八进制
3、6 String类型
String类型用于表示有零个或多个16位Unicode字符组成的字符序列,即字符串。字符串可以由双引号或者单引号表示。
- 字符字面量
String数据类型包含一些特殊的字符字面量,也叫转义序列,用于表示非打印字符,或者具有其他功能的字符。
- 字符串的特点
ECMAScript中的字符串时不可变的,==》字符串一旦创建,它的值就不能改变。
若改变,首先要销毁原来饿字符串,然后再用另一个包含新值的字符串填充该变量。
- 转换为字符串
- toString方法。
数值、布尔值、对象、和字符串值都有toString()方法,但是null和undefined值没有这个方法。
toString()方法:有一个参数(可传可不传)==》输出数值的基数。默认情况下,toString()方法以十进制格式返回数值的字符串。而传如基数,toString()可以输出二进制、八进制、十六进制、乃至其他任意有效的进制格式表示的字符串。
- String()函数
这个函数能将任何类型的值转换为字符串,包括null、undefined。
转换规则:
3.7 Object类型
ECMScript中的对象其实就是一组数据和功能的集合。可通过执行new操作符跟着要创建的对象类型名称来创建。
主要思想:Object类型时所有它的实例的基础。==》Object类型所具有的任何属性和方法同样存在更具体的对象中。