Skip to content

Commit 3290cda

Browse files
committed
docs(operators): edit priority
1 parent 61f810d commit 3290cda

4 files changed

Lines changed: 31 additions & 6 deletions

File tree

docs/features/error.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,13 +170,13 @@ new UserError('这是自定义的错误!');
170170
`throw`语句的作用是手动中断程序执行,抛出一个错误。
171171

172172
```javascript
173-
if (x < 0) {
173+
if (x <= 0) {
174174
throw new Error('x 必须为正数');
175175
}
176176
// Uncaught ReferenceError: x is not defined
177177
```
178178

179-
上面代码中,如果变量`x`小于`0`,就手动抛出一个错误,告诉用户`x`的值不正确,整个程序就会在这里中断执行。可以看到,`throw`抛出的错误就是它的参数,这里是一个`Error`实例。
179+
上面代码中,如果变量`x`小于等于`0`,就手动抛出一个错误,告诉用户`x`的值不正确,整个程序就会在这里中断执行。可以看到,`throw`抛出的错误就是它的参数,这里是一个`Error`实例。
180180

181181
`throw`也可以抛出自定义错误。
182182

docs/operators/arithmetic.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,16 @@ var x = 1;
242242
2 ** 4 // 16
243243
```
244244

245+
注意,指数运算符是右结合,而不是左结合。即多个指数运算符连用时,先进行最右边的计算。
246+
247+
```javascript
248+
// 相当于 2 ** (3 ** 2)
249+
2 ** 3 ** 2
250+
// 512
251+
```
252+
253+
上面代码中,由于指数运算符是右结合,所以先计算第二个指数运算符,而不是第一个。
254+
245255
## 赋值运算符
246256

247257
赋值运算符(Assignment Operators)用于给变量赋值。

docs/operators/boolean.md

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,14 +86,17 @@ i && doSomething();
8686

8787
上面代码的两种写法是等价的,但是后一种不容易看出目的,也不容易除错,建议谨慎使用。
8888

89-
且运算符可以多个连用,这时返回第一个布尔值为`false`的表达式的值。
89+
且运算符可以多个连用,这时返回第一个布尔值为`false`的表达式的值。如果所有表达式的布尔值都为`true`,则返回最后一个表达式的值。
9090

9191
```javascript
9292
true && 'foo' && '' && 4 && 'foo' && true
9393
// ''
94+
95+
1 && 2 && 3
96+
// 3
9497
```
9598

96-
上面代码中,第一个布尔值为`false`的表达式为第三个表达式,所以得到一个空字符串。
99+
上面代码中,例一里面,第一个布尔值为`false`的表达式为第三个表达式,所以得到一个空字符串。例二里面,所有表达式的布尔值都是`true`,所有返回最后一个表达式的值`3`
97100

98101
## 或运算符(||)
99102

@@ -116,14 +119,17 @@ x // 1
116119

117120
上面代码中,且运算符的第一个运算子为`true`,所以直接返回`true`,不再运行第二个运算子。所以,`x`的值没有改变。这种只通过第一个表达式的值,控制是否运行第二个表达式的机制,就称为“短路”(short-cut)。
118121

119-
或运算符可以多个连用,这时返回第一个布尔值为`true`的表达式的值。
122+
或运算符可以多个连用,这时返回第一个布尔值为`true`的表达式的值。如果所有表达式都为`false`,则返回最后一个表达式的值。
120123

121124
```javascript
122125
false || 0 || '' || 4 || 'foo' || true
123126
// 4
127+
128+
false || 0 || ''
129+
// ''
124130
```
125131

126-
上面代码中第一个布尔值为`true`的表达式是第四个表达式,所以得到数值4。
132+
上面代码中,例一里面,第一个布尔值为`true`的表达式是第四个表达式,所以得到数值4。例二里面,所有表达式的布尔值都为`false`,所以返回最后一个表达式的值
127133

128134
或运算符常用于为一个变量设置默认值。
129135

docs/operators/priority.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,3 +185,12 @@ q = a ? b : (c ? d : (e ? f : g));
185185
```
186186

187187
上面的两行代码,各有三个等号运算符和三个三元运算符,都是先计算最右边的那个运算符。
188+
189+
指数运算符(`**`)也是右结合的。
190+
191+
```javascript
192+
// 相当于 2 ** (3 ** 2)
193+
2 ** 3 ** 2
194+
// 512
195+
```
196+

0 commit comments

Comments
 (0)