Merge pull request #371 from brentguf/function-expressions
Function expressions
This commit is contained in:
commit
a894f82412
1 changed files with 9 additions and 10 deletions
|
@ -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.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue