javascript知识复习巩固一:变量

50 阅读5分钟

一. 基本数据类型

1. Boolean

truefalse

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,如果输入不是数字类型则返回false
  • Number.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方法详解

image.png

附录

安全整数

image.png

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

其实例是唯一且不可变的数据类型