JavaScript Return
今天一起了解一下 JavaScript 中的 return
语句。
语法
return
语句用于指定函数的返回值。当 JavaScript 遇到 return
语句时,函数将立即返回,并且不再执行任何后续的语句。
1 | return [expression]; // expression 是要返回的值 |
1 | function add(a, b) { |
如果省略 expression
,或者 return
语句没有在函数中,则返回值为 undefined
。
1 | return; // undefined |
return
后面省略表达式,返回值为undefined
。
1 | function foo() { |
没有return
语句,也返回undefined
。
1 | function bar() { |
返回对象
return
语句返回复杂值时,return
不能独占一行,否则会报错。
下面这样写会导致语法错误。
1 | function getPerson() { |
正确的写法是:
1 | function getPerson() { |
try…catch…finally
如果在 try-catch-finally
语句块中使用了 return
语句,则执行顺序如下:
- 先计算return后面的表达式的值。
- 然后执行
finally
语句块中的代码。 - 最后return步骤1中计算出的值。
1 | function foo() { |
再看一个复杂的例子
1 | function foo() { |
为啥结果是1 2 1
呢?
- try中`console.log(a)输出1,这个很好理解。
return a++
,这里的a++
是先返回a
的值,然后再执行a++
,所以return
返回的是1
。finally
中console.log(a)
输出的是2
,因为a++
执行了一次。
所以执行的顺序是:
- 先计算return后面的表达式,a = 2.
- 然后执行finally中的代码,输出a = 2
- 最后return返回1.