变量
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、confirm
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
。
条件分支:if 和 '?'
略
逻辑运算符
||(或)
一个或运算 ||
的链,将返回第一个真值,如果不存在真值,就返回该链的最后一个值。
特殊用法
-
获取变量列表或者表达式中的第一个真值。
用或运算符选择出有数据的那一个变量,如果都没有,则在或运算的链最后放一个值作为结果。
-
短路求值(Short-circuit evaluation)。
||
对其参数进行处理,直到达到第一个真值,然后立即返回该值,而无需处理其他参数。利用这个特性,若操作数是一个有副作用的表达式则可以发挥作用。
&&(与)
与运算返回第一个假值,如果没有假值就返回最后一个值。