# 变量
let
— 现代的变量声明方式。var
— 老旧的变量声明方式。一般情况下,我们不会再使用它。但是,我们会在 老旧的 "var" 章节介绍 var 和 let 的微妙差别,以防你需要它们。const
— 类似于 let,但是变量的值无法被修改。
# 数据类型
弱类型语言,对变量的类型没有进行强制的设定
- Number 类型
- 特殊数值:
Infinity
、-Infinity
和NaN
。 - 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。
类 →