四、数据类型
- 5种简单数据类型(基本数据类型):Undefined、Null、Boolean、Number和String。
- 1种复杂数据类型:Object(本质上是由一组无序的名值对组成的)。
1、typeof操作符
检测给定变量的基本数据类型。
返回值如下:
- “Undefined”——未定义
- “boolean”——布尔值
- “string”——字符串
- “number”——数值
- “object”——对象或null
- “function”——函数
【注】
typeof主要用于检测变量的基本数据类型,但在检测引用类型的值时,使用instanceof操作符。
result = variable instanceof constructor
所有引用类型的值都是Object的实例。所以,在检测一个引用类型值和Object构造函数时,instanceof操作符始终会返回true,但是,如果使用instanceof操作符检测基本类型的值时,会始终返回false,因为基本类型不是对象。
2、Undefined类型
- 只有一个值,即特殊的undefined。
- 在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。
【注】包含undefined值的变量与尚未定义的变量是不一样的。对于尚未声明的变量,只能执行一项操作,即使用typeof操作符检测其数据类型。
var message; //这个变量声明之后未对其初始化,默认得到了undefined值
var age //这个变量没有声明
alert(message); //"undefined"
alert(age); //产生错误
3、Null类型
- 只有一个值,即null。
- 从逻辑角度来看,null值表示一个空对象指针。所以在调用typeof null时会返回”object”
- 实际上,undefined值是派生自null值的。ECMA-262规定对它们的相等性测试要返回true。
alert(null == undefined); // true
4、Boolean类型
两个字面值:true和false。
5、Number类型
1 )数值字面量有十进制、八进制、十六进制。其中,八进制字面量在严格模式下无效。十六进制字面量的前两位必须是0x。
2)JavaScript不区分整数值和浮点数值。所有数字均用浮点数值表示。
最小数值保存在Number.MIN_VALUE中,最大数值保存在Number.MAX_VALUE中。
3)NaN:非数值(Not a Number)
- 用于表示一个本来要返回数值的操作数未返回数值的情况。
- 任何涉及NaN的操作都会返回NaN。
- NaN与任何值都不相等,包括NaN本身。
- 使用isNaN()判断一个参数是否“不是数值”。
4)Infinity:正无穷大。
- Infinity不是能参与计算的数值。
- 可以使用isFinite()函数判断一个数值是不是无穷的。
5)把非数值转换为数值的3个函数:
- Number():可以用于任何数据类型。
输入 | 返回值 |
---|---|
Boolean | true为1,false为0 |
数字值 | 简单的传入和返回 |
null | 0 |
undefined | NaN |
字符串中只含数字 | 十进制数值 |
字符串中包含有效的浮点格式 | 对应的浮点数值 |
字符串中包含十六进制格式 | 相同大小的十进制整数 |
空的字符串 | 0 |
字符串中包含除上述格式之外的字符 | NaN |
parseInt():把字符串转换成数值,常用于处理整数。
- 会忽略字符串前面的空格,直至找到第一个非空格字符。
- 如果第一个字符不是数字字符或者负号,返回NaN。
- 如果第一个字符是数字字符,则会一直解析完所有后续字符或遇到的第一个非数字字符。
- 传入第二个参数,即转换时使用的基数(多少进制),可以明确以什么形式解析。
parseFloat():把字符串转换成数值。与parseInt()类似,不过是用于处理浮点数字。
6、String类型
1)用于表示由零或多个16位Unicode字符组成的字符序列,即字符串。
2)字符串可以由双引号或单引号表示。
3)字符字面量,即转义序列,用于表示非打印字符,或者具有其他用途的字符。
字面量 | 含义 |
---|---|
\n | 换行 |
\t | 制表 |
\b | 退格 |
\r | 回车 |
\f | 进纸(换页) |
\ | 斜杠 |
\’ | 单引号,在单引号表示的字符串中使用。 |
\” | 双引号,在双引号表示的字符串中使用。 |
\xnn | 以十六进制代码nn表示的一个字符 |
\unnnn | 以十六进制代码nnnn表示的一个Unicode字符 |
4)字符串不可变,换句话说,字符串一旦创建,它的值就不能改变。
5)转换为字符串的方式:
- toString()方法:只适用于数值、布尔值、对象和字符串值,而null和undefined值没有这个方法。
- 默认以十进制格式返回数值的字符串表示。
- 传递基数可以输出二进制、八进制、十六进制。
- 使用转型函数String():适用于所有类型。
值的类型 | String()返回值 |
---|---|
有toString()方法的值 | 调用该方法(没有参数)并返回相应的结果 |
null | null |
undefined | undefined |
7、object类型
1)对象是一组数据和功能的集合。
2)对象可以通过执行new操作符后跟要创建的对象类型的名称来创建。
创建的Object类型的实例并为其添加属性和(或)方法,可以创建自定义对象。
var o = new Object();
var o = new Object(); // 有效,但不推荐
3)Object类型所具有的任何属性和方法存在于更具体的对象中。可以这么理解,Object是所有对象的基础,也就是父类,我们自定义创建的对象都继承了它的特性。
4)Object实例的属性和方法
- constructor:保存着用于创建当前对象的函数。
- hasOwnProperty(“propertyName”):用于检查给定的属性在当前对象实例中是否存在。
- isPrototypeOf(object):用于检查传入的对象是否是当前对象的原型。
- toLocaleString:返回对象的字符串表示,该字符串与执行环境的地区对应。
- toString():返回对象的字符串表示。
- valueOf():返回对象的字符串、数值或布尔值表示。通常与toString()方法的返回值相同。