本内容的介绍主要参考了《JavaScript高级程序设计》
1. typeof 操作符
* 用法:
```
var book = '';
typeof book;
typeof(book);
// typeof 是一个操作符,不是一个函数,因此圆括号不是必需的。
```
* 返回值:
只会返回以下列举的某个字符串:
'undefined', 'boolean', 'string', 'number', 'object', 'function'。
2. Undefined 数据类型
该类型只有一个值,为特殊的 undefined。无需特意设置变量为 undefined。
```
var book;
console.log(type of book);
// 打印值:undefined
```
3. Null 类型
该类型的值只有一个,为特殊的 null。表示一个空对象指针。
```
var book = null;
console.log(type of book);
// 打印值:null
```
虽然 null 与 undefined 的 相等操作符(==)返回 true,但是两者不为相同。undefined 无需特意为变量设置该值;但是如果变量确定为对象类型则明确让该变量保存为 null 值。
4. Boolean类型
该类型只有两个字面值:true 和 false。(该值区分大小写,意味着任何大小写混合形式的该值,都不是 Boolean 值。)
- 各种数据类型->Boolean类型的转换方法:
// 转化方法:Boolean(); var msg = 'Hello world'; var msgAsBoolean = Boolean(msg); // 打印值:true
- 各种数据类型->Boolean类型的转换规则:
数据类型 | 转换为true的值 | 转换为false的值 |
---|---|---|
Boolean | true | false |
String | 任何非空字符串 | ''(空字符串) |
Number | 任何非0数值(-∞,负数,正数,+∞) | 0和NaN |
Obejct | 任何对象 | null |
Undefined | undefined |
5. Number类型
- 整数类型
// 十进制
55
// 八进制:第一位必须是零(0),后面是八进制数字序列(0~7)。超出,直接当作十进制数值解析;
070 => 35
079 => 79
// 十六进制:第一位必须是 0x,后面是十六进制数字序列(0~9A~F),字母不区分大小写。
0xaa => 170
0x1F => 31
// 实际运算时,均转为十进制。
- 浮点类型
// 包含小数点,小数点前后至少一位数字
1.1
// 省略小数点前面的整数,不推荐
.1
// 省略小数点后面的整数,转换为整数
1. => 1
// 小数点后面为0
10.0 => 10
- 知识点如下:
1>数值范围
2>NaN
3>数值转换:Number(), parseInt(), parseFloat()
Number()转换规则:
// 如果是Boolean值,true 和 false 转换为 1和 0
var num1 = Number(true); // 1
// 如果是数字值,则进行简单的传入和返回
var num2 = Number(5); // 5
// 如果是null值,则返回 0
var num3 = Number(null); //0
// 如果是undefined,则返回NaN
var num4 = Number(undefined); // NaN
// 如果是字符串,情况分为多类:
let stringNumber = '123'; // 只包含数字,转换为十进制数值,忽视前导的0
let stringFloat = '1.35'; // 只包含有效的浮点数,转换为对应的浮点数值,忽略前导的0
let stringXF = '0xf'; // 有效的十六进制,转换为对应的十进制整数值
let stringEmpty = ''; // 空字符串,转换为0
let stringOther = 'dd23'; // 其他格式,转换为NaN
// 如果是对象,调用对象的 valueOf() 方法,再根据规则转换,如果结果为NaN,则调用对象的 toString() 方法,再根据规则转换
parseInt() 转换规则:
// 数字开头的任意字符串,默认将前面可识别部分转为整数
var num1 = parseInt('1234abcd5678'); // 1234
var num2 = parseInt('') // NaN
var num3= parseInt('22.5') // 22
// 识别整数格式:十进制、八进制、十六进制
var num4 = parseInt('10') // 10
var num5 = parseInt('010') // 8
var num6 = parseInt('0x10') // 16
// 在ES3 引擎中,‘070’被当作八进制字面量,解析为十进制的56;在ES5引擎中,会忽略前导‘0’,解析为70
// 由此,parseInt 会提供第二个参数,指定解析的值为多少进制,并且可以不带整数格式的前缀;
var num4 = parseInt('10', 10) // 10
var num5 = parseInt('10',8) // 8
var num6 = parseInt('10',16) // 16
parseFloat() 转换规则:
// 数字开头的任意字符串,可以解析小数点,默认忽略前导0;
var num1 = parseFloat('.1234') // 0.1234
var num2 = parseFloat('012.34') // 12.34
// 只解析十进制,无法解析十六进制和八进制等,也没有第二个参数;
var num3 = parseFloat('0x10') // 0
var num4 = parseFloat('010') // 10
6. String 类型
表示由 零 或 多个16位Unicode字符组成的字符序列,即字符串。可以由单引号(")或者双引号(')表示。
字面量 | 含义 |
---|---|
\n | 换行 |
\t | 制表 |
\b | 空格 |
\r | 回车 |
\f | 进纸 |
\\ | 斜杠 |
\' | 单引号,例如:'Hello, it\'s me' |
\" | 双引号,例如:"\"你好,是我\"" |
- 转换为字符串
toString() 方法:
// 数值、布尔值、对象和字符串值,直接返回字符串副本,null和undefined没有该方法;
let val1 = 10, // '10'
let val2 = true, //'true'
let val3 = {}, // '[object object]'
let val4 = 'Hello', // 'Hello'
val.toString();
// 通常,toString() 方法不用传参。如果在数值调用时,可以传基数,则输出有效进制的字符串值,传入基数不正确时报错
var num = 10;
num.toString(); //10
num.toString(2) //1010
num.toString(8) //12
String() 方法:
// 如果值有该方法,返回相应字符串;
// 如果是null,则返回 'null';
// 如果是undefined,则返回'undefined';
7. Object 类型
定义:ECMAScript 中的对象其实就是一组数据和功能的集合。
Obejct 类型具有的任何属性和方法同样存在于实例当中;
属性 | 方法 |
---|---|
constructor | 保存着用于创建当前对象的函数 |
hasOwnProperty(propertyName) | 用于检查给定的属性在当前对象实例中是否存在(不是在实例的原型中) |
isPrototypeOf(object) | 用于检查传入的对象是否是传入对象的原型 |
propertyIsEnumerable(propertyName) | 用于检查给定的属性是否能够使用for-in语句来枚举。 |
toLocaleString() | 返回对象的字符串表示,与执行环境的地区对应 |
toString() | 返回对象的字符串表示 |
valueOf() | 返回对象的字符串、数值或布尔值表示。通常与toString()方法的返回值相同 |
网友评论