JavaScript 中有八种基本的数据类型(译注:前七种为基本数据类型,也称为原始类型,而 object
为复杂数据类型)。
number
用于任何类型的数字:整数或浮点数,在 ±(253-1)
范围内的整数。bigint
用于任意长度的整数。string
用于字符串:一个字符串可以包含 0 个或多个字符,所以没有单独的单字符类型。boolean
用于 true
和 false
。null
用于未知的值 —— 只有一个 null
值的独立类型。undefined
用于未定义的值 —— 只有一个 undefined
值的独立类型。symbol
用于唯一的标识符。object
用于更复杂的数据结构。我们可以通过 typeof
运算符查看存储在变量中的数据类型。
typeof x
或者 typeof(x)
。"string"
。typeof null
会返回 "object"
—— 这是 JavaScript 编程语言的一个错误,实际上不是一个 object
。alert
显示信息。
prompt
显示信息要求用户输入文本。点击确定返回文本,点击取消或按下 Esc 键返回 null
。
confirm
显示信息等待用户点击确定或取消。点击确定返回 true
,点击取消或按下 Esc 键返回 false
。
有三种常用的类型转换:转换为 string 类型、转换为 number 类型和转换为 boolean 类型。
字符串转换 —— 转换发生在输出内容的时候,也可以通过 String(value)
进行显式转换。原始类型值的 string 类型转换通常是很明显的。
数字型转换 —— 转换发生在进行算术操作时,也可以通过 Number(value)
进行显式转换。
数字型转换遵循以下规则:
值 | 变成…… |
---|---|
undefined |
NaN |
null |
0 |
true / false |
1 / 0 |
string |
“按原样读取”字符串,两端的空白会被忽略。空字符串变成 0 。转换出错则输出 NaN 。 |
布尔型转换 —— 转换发生在进行逻辑操作时,也可以通过 Boolean(value)
进行显式转换。
布尔型转换遵循以下规则:
值 | 变成…… |
---|---|
0 , null , undefined , NaN , "" |
false |
其他值 | true |
上述的大多数规则都容易理解和记忆。人们通常会犯错误的值得注意的例子有以下几个:
undefined
进行数字型转换时,输出结果为 NaN
,而非 0
。"0"
和只有空格的字符串(比如:" "
)进行布尔型转换时,输出结果为 true
。+
,-
,*
,/
,%
,**
(求幂运算 a ** b
是 a
乘以自身 b
次。适用于非整数)+
运算符=
x = value
将值 value
写入 x
然后返回 x。/=
和 -=
等。这类运算符的优先级与普通赋值运算符的优先级相同,所以它们在大多数其他运算之后执行运算符 ++
和 --
可以置于变量前,也可以置于变量后。
counter++
。++counter
。&
)|
)^
)~
)<<
)>>
)>>>
)参考 位操作符
,
将它们分开。每个语句都运行了,但是只有最后的语句的结果会被返回。=
还要低==
下,null
和 undefined
相等且各自不等于任何其他的值。>
或 <
进行比较时,需要注意变量可能为 null/undefined
的情况。比较好的方法是单独检查变量是否等于 null/undefined
。略
一个或运算 ||
的链,将返回第一个真值,如果不存在真值,就返回该链的最后一个值。
特殊用法
获取变量列表或者表达式中的第一个真值。
用或运算符选择出有数据的那一个变量,如果都没有,则在或运算的链最后放一个值作为结果。
短路求值(Short-circuit evaluation)。
||
对其参数进行处理,直到达到第一个真值,然后立即返回该值,而无需处理其他参数。利用这个特性,若操作数是一个有副作用的表达式则可以发挥作用。
与运算返回第一个假值,如果没有假值就返回最后一个值。