File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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
Original file line number Diff line number Diff line change @@ -242,6 +242,16 @@ var x = 1;
2422422 ** 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)用于给变量赋值。
Original file line number Diff line number Diff line change @@ -86,14 +86,17 @@ i && doSomething();
8686
8787上面代码的两种写法是等价的,但是后一种不容易看出目的,也不容易除错,建议谨慎使用。
8888
89- 且运算符可以多个连用,这时返回第一个布尔值为` false ` 的表达式的值。
89+ 且运算符可以多个连用,这时返回第一个布尔值为` false ` 的表达式的值。如果所有表达式的布尔值都为 ` true ` ,则返回最后一个表达式的值。
9090
9191``` javascript
9292true && ' 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
122125false || 0 || ' ' || 4 || ' foo' || true
123126// 4
127+
128+ false || 0 || ' '
129+ // ''
124130```
125131
126- 上面代码中第一个布尔值为 ` true ` 的表达式是第四个表达式,所以得到数值4。
132+ 上面代码中,例一里面,第一个布尔值为 ` true ` 的表达式是第四个表达式,所以得到数值4。例二里面,所有表达式的布尔值都为 ` false ` ,所以返回最后一个表达式的值 。
127133
128134或运算符常用于为一个变量设置默认值。
129135
Original file line number Diff line number Diff 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+
You can’t perform that action at this time.
0 commit comments