Merge pull request #371 from brentguf/function-expressions

Function expressions
This commit is contained in:
Ilya Kantor 2018-03-03 09:21:39 +03:00 committed by GitHub
commit a894f82412
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -185,9 +185,8 @@ First, the syntax: how to see what is what in the code.
return a + b;
}
```
- *Function Expression:* a function, created inside an expression or inside another syntax construct.
Here, the function is created at the right side of the "assignment expression =":
- *Function Expression:* a function, created inside an expression or inside another syntax construct. Here, the function is created at the right side of the "assignment expression" `=`:
```js
// Function Expression
let sum = function(a, b) {
@ -243,7 +242,7 @@ Function Expressions are created when the execution reaches them. That would hap
Sometimes that's handy to declare a local function only needed in that block alone. But that feature may also cause problems.
For instance, let's imagine that we need to declare a function `welcome()` depending on the `age` variable that we get in run time. And then we plan to use it some time later.
For instance, let's imagine that we need to declare a function `welcome()` depending on the `age` variable that we get during runtime. And then we plan to use it some time later.
The code below doesn't work:
@ -298,7 +297,7 @@ if (age < 18) {
}
}
// Here we're out of figure brackets,
// Here we're out of curly braces,
// so we can not see Function Declarations made inside of them.
*!*
@ -439,15 +438,15 @@ They are very convenient for simple one-line actions, when we're just too lazy t
The examples above took arguments from the left of `=>` and evaluated the right-side expression with them.
Sometimes we need something a little bit more complex, like multiple expressions or statements. It is also possible, but we should enclose them in figure brackets. Then use a normal `return` within them.
Sometimes we need something a little bit more complex, like multiple expressions or statements. It is also possible, but we should enclose them in curly braces. Then use a normal `return` within them.
Like this:
```js run
let sum = (a, b) => { // the figure bracket opens a multiline function
let sum = (a, b) => { // the curly brace opens a multiline function
let result = a + b;
*!*
return result; // if we use figure brackets, use return to get results
return result; // if we use curly braces, use return to get results
*/!*
};
@ -475,5 +474,5 @@ So we should use a Function Expression only when a Function Declaration is not f
Arrow functions are handy for one-liners. They come in two flavors:
1. Without figure brackets: `(...args) => expression` -- the right side is an expression: the function evaluates it and returns the result.
2. With figure brackets: `(...args) => { body }` -- brackets allow us to write multiple statements inside the function, but we need an explicit `return` to return something.
1. Without curly braces: `(...args) => expression` -- the right side is an expression: the function evaluates it and returns the result.
2. With curly braces: `(...args) => { body }` -- brackets allow us to write multiple statements inside the function, but we need an explicit `return` to return something.