一. 基本数据类型
1. Boolean
true和false
1.1 Boolean方法
当 Boolean() 作为构造函数调用时(使用 new),将创建 Boolean 对象,它不是一个原始值。 当 Boolean() 作为普通函数调用时(不使用 new),它将参数强制转换为布尔原始值。
描述
作为第一个参数传递的值被转换为布尔值 。如果该值被省略或为 0、-0、0n、null、false、NaN、undefined 或空字符串(""),那么该对象的初始值为 false。所有其他的值,包括任何对象、空数组([])或字符串 "false",都会创建一个初始值为 true 的对象。
1.2 实例方法
- Boolean.prototype.toString():返回表示指定的布尔对象的字符串
- Boolean.prototype.valueOf():返回布尔对象的原始值
2. null
一个表示空值的特殊关键字
3. undefined
一个未定义值的顶级属性
4. Number
整数或者浮点数
4.1 Number构造方法
- Number方法将创建Number对象
- 当作为函数调用时返回Number类型的原始值,会将参数强制转换为数字原始值,如果不能转换就返回NaN
- new方式调用将返回Number对象
4.2 静态方法
Number.isFinite:判断传入值是否是一个有限数,它检查给定值是一个数字,且该数字既不是正的Infinity,也不是负的Infinity或NaN。Number.isInteger:判断传入值是否为整数Number.isNaN:判断传入的值是否为NaN,如果输入不是数字类型则返回falseNumber.isSafeInteger:判断参数是否是一个安全整数Number.parseFloat:解析参数并返回浮点数。如果无法从参数中解析出一个数字,则返回NaN。Number.parseInt:解析字符串并返回一个指定基数的整数
4.3 静态属性
Number.EPSILON:表示 1 与大于 1 的最小浮点数之间的差值Number.MAX_SAFE_INTEGER:静态数据属性表示在 JavaScript 中最大的安全整数(2^53 – 1)Number.MAX_VALUE:表示在 JavaScript 中可表示的最大数值,2^1024 - 1,或大约 1.7976931348623157E+308。Number.MIN_SAFE_INTEGER:代表在 JavaScript 中最小的安全整数 -(2^53 - 1)。Number.MIN_VALUE:表示在 JavaScript 中可表示的最小正数值,2^-1074,或 5E-324。Number.NaN:表示非数字值Number.NEGATIVE_INFINITY:表示负无穷值,与全局属性 Infinity 的负值相同。Number.POSITIVE_INFINITY:表示正无穷大,与全局属性 Infinity 的值相同
4.4 实例方法
Number.prototype.toExponential:返回一个以指数表示法表示该数字的字符串Number.prototype.toFixed():使用定点表示法来格式化该数值,将数字转换为字符串,并可以指定小数点后的位数,如果数值过大会调用toString方法返回科学记数法字符串Number.prototype.toLocaleString():返回这个数字特定于语言环境的表示字符串Number.prototype.toPrecision():返回一个以指定精度表示该数字的字符串Number.prototype.toString():返回表示该数字值的字符串,参数表示进制,2-36之间Number.prototype.valueOf():返回该数字的值
4.2.1 附录
parseFloat的解析规则
- 忽略前导空白:该方法会忽略字符串开头的空白字符
- 解析有效的数字格式:包括数字、小数点、指数部分、正负号
- 遇到无效字符立即停止:解析会在第一个无效字符处终止,返回已解析的部分,无效字符是指字母、第二个小数点、非指数符号的特殊字符
- 以0x开头的字符串解析结果是0,因为x是无效字符
- 空字符串或纯非数字字符串返回NaN
- null、undefined、布尔值等非字符串参数会被隐式转换为字符串再解析
- 支持科学记数法
- 前导0不会按照八进制解析,parseFloat是指按十进制解析
parseInt的解析规则
- 忽略前导空白字符
- 逐字符解析:从左到右依次检查字符,遇到第一个无效数字字符时停止解析,返回已解析部分
- 第二个参数radix表示第一个参数的基数,即是多少进制。以0x开头会被按照16进制解析,以0开头会按照十进制解析,默认按照十进制解析
- radix有效范围是2-36,超出范围返回NaN
- radix为0、undefined或者null按照十进制解析
Number.prototype.toString方法详解
附录
安全整数
parseFloat的解析规则
5. String
表示文本值的字符序列
5.1 静态方法
String.fromCharCode():返回由指定的 UTF-16 码元序列创建的字符串console.log(String.fromCharCode(189, 43, 190, 61)); // Expected output: "½+¾="String.fromCodePoint():将根据指定的码位序列返回一个字符串console.log(String.fromCodePoint(9731, 9733, 9842, 0x2f804)); // Expected output: "☃★♲你"String.raw: JavaScript 中用于处理模板字符串的内置标签函数,其主要作用是获取模板字符串的原始字面量值,保留所有转义字符而不进行解释处理
附录
码位(code point)
- 字符在Unicode标准中的唯一数字标识符
- 范围:U+0000 到 U+10FFFF(1,114,112个可用码位)
- 表示抽象的字符概念(如汉字"字"的码位是U+5B57)
码元(code unit)
- 定义:特定编码方案中表示码位的最小存储单位
- 常见大小:
- UTF-8:8位(1字节)码元
- UTF-16:16位(2字节)码元(JavaScript使用)
- UTF-32:32位(4字节)码元
- 核心特点:
- 实际存储在计算机中的二进制单元
- 一个码位可能由1-4个码元组成
// 基本字符(BMP)
const letter = "A"; // 码位: U+0041
console.log(letter.length); // 1 (占用1个16位码元)
// 辅助平面字符(表情符号)
const emoji = "😊"; // 码位: U+1F60A
console.log(emoji.length); // 2 (占用2个16位码元)
// 获取码元值
const codeUnits = [];
for (let i = 0; i < emoji.length; i++) {
codeUnits.push(emoji.charCodeAt(i)); // 返回码元值
}
console.log(codeUnits); // [55357, 56842](代理对)
// 获取码位
console.log(emoji.codePointAt(0)); // 128522 (U+1F60A的十进制)
6. Symbol
其实例是唯一且不可变的数据类型