# 变量

  • let — 现代的变量声明方式。
  • var — 老旧的变量声明方式。一般情况下,我们不会再使用它。但是,我们会在 老旧的 "var" 章节介绍 var 和 let 的微妙差别,以防你需要它们。
  • const — 类似于 let,但是变量的值无法被修改。

# 数据类型

弱类型语言,对变量的类型没有进行强制的设定

  • Number 类型
    • 特殊数值: Infinity-InfinityNaN
    • Infinity: 代表无穷大,是一个比任何数字都大的特殊值
    • NaN 代表一个计算错误。它是一个不正确的或者一个未定义的数学操作所得到的结果,NaN 是粘性的。任何对 NaN 的进一步数学运算都会返回 NaN
  • BigInt类型
    • 在 JavaScript 中,“number” 类型无法安全地表示大于 (253-1)(即 9007199254740991),或小于 -(253-1) 的整数
    • BigInt 类型是最近被添加到 JavaScript 语言中的,用于表示任意长度的整数。
    • 可以通过将 n 附加到整数字段的末尾来创建 BigInt 值。
    • const bigInt = 1234567890123456789012345678901234567890n;
  • String类型
    • JavaScript 中的字符串必须被括在引号里。
    • 在 JavaScript 中,有三种包含字符串的方式。
      • 双引号:"Hello".
      • 单引号:'Hello'.
      • 反引号:Hello.
    • 反引号是 功能扩展 引号。它们允许我们通过将变量和表达式包装在 ${…} 中,来将它们嵌入到字符串中。
  • Boolean 类型(逻辑类型)
    • boolean 类型仅包含两个值:true 和 false
  • null 值
    • 特殊的 null 值不属于上述任何一种类型。
    • 相比较于其他编程语言,JavaScript 中的 null 不是一个“对不存在的 object 的引用”或者 “null 指针”。
    • JavaScript 中的 null 仅仅是一个代表“无”、“空”或“值未知”的特殊值。
  • undefined 值
    • 特殊值 undefined 和 null 一样自成类型。
    • undefined 的含义是 未被赋值。如果一个变量已被声明,但未被赋值,那么它的值就是 undefined
  • Object 类型和 Symbol 类型
    • object 类型是一个特殊的类型。
  • typeof 运算符
    • typeof 运算符返回参数的类型。
    • typeof null 的结果为 "object"。这是官方承认的 typeof 的错误,这个问题来自于 JavaScript 语言的早期阶段,并为了兼容性而保留了下来。null 绝对不是一个 object。null 有自己的类型,它是一个特殊值。typeof 的行为在这里是错误的。
    • typeof alert 的结果是 "function",因为 alert 在 JavaScript 语言中是一个函数。

# 类型转换

有三种常用的类型转换:转换为 string 类型、转换为 number 类型和转换为 boolean 类型。

字符串转换 —— 转换发生在输出内容的时候,也可以通过 String(value) 进行显式转换。原始类型值的 string 类型转换通常是很明显的。

数字型转换 —— 转换发生在进行算术操作时,也可以通过 Number(value) 进行显式转换。

数字型转换遵循以下规则:

原值 转换后
undefined NaN
null 0
true/false 1/0
string “按原样读取”字符串,两端的空白字符(空格、换行符 \n、制表符 \t 等)会被忽略。空字符串变成 0。转换出错则输出 NaN。

布尔型转换 —— 转换发生在进行逻辑操作时,也可以通过 Boolean(value) 进行显式转换。

布尔型转换遵循以下规则:

变成……
0, null, undefined, NaN, "" false
其他值 true
  • 对 undefined 进行数字型转换时,输出结果为 NaN,而非 0。
  • 对 "0" 和只有空格的字符串(比如:" ")进行布尔型转换时,输出结果为 true。