Finished Chapter 8.1.1 Function Declaration
parent
574b235324
commit
b4afb10ef2
|
@ -0,0 +1,58 @@
|
|||
# Chapter 8. Functions
|
||||
|
||||
**Function** = a block of JS code that's defined once but may be invoked multiple times.
|
||||
* *argument*: values provided by during invocation as function's parameters.
|
||||
* *return value*: computed by function using argument values
|
||||
* *invocation context*: value of `this` keyword for each invocation
|
||||
|
||||
Utilization of functions:
|
||||
* **method of object**: if function is assigned to a property of an obj.
|
||||
* When a function is invoked on an object (e.g. `obj.method()`), this object become invocation context (aka `this`) for the function
|
||||
* **Constructor**: function designed to initialize a new obj.
|
||||
|
||||
Function as **first class citizen** (object):
|
||||
* In JS, functions are obj. Hence, can be manipulated by programs
|
||||
* We can set properties on functions and invoke methods on them (i.e. pass function as parameter to method)
|
||||
|
||||
JS function definitions can be nested within other functions
|
||||
|
||||
## 8.1 Defining Functions
|
||||
|
||||
### 8.1.1 Function Declarations
|
||||
|
||||
**Function declaration** = `function` keyword + Identifier as function name + `(param1, param2, ...)` + `{JS statements as function body}`
|
||||
* `return` causes function to stop executing and return computed value to caller
|
||||
* if body has no `return`, value of function is `undefined`
|
||||
|
||||
```js
|
||||
// Print the name and value of each property of o. Return undefined.
|
||||
function printprops(o) {
|
||||
for(let p in o) {
|
||||
console.log(`${p}: ${o[p]}\n`);
|
||||
}
|
||||
}
|
||||
|
||||
// Compute the distance between Cartesian points (x1,y1) and (x2,y2).
|
||||
function distance(x1, y1, x2, y2) {
|
||||
let dx = x2 - x1;
|
||||
let dy = y2 - y1;
|
||||
return Math.sqrt(dx*dx + dy*dy);
|
||||
}
|
||||
|
||||
// A recursive function (one that calls itself) that computes factorials
|
||||
// Recall that x! is the product of x and all positive integers less than it.
|
||||
function factorial(x) {
|
||||
if (x <= 1) return 1;
|
||||
return x * factorial(x-1);
|
||||
}
|
||||
```
|
||||
|
||||
* Name of function (in function declaration) becomes a variable, whose value is function itself.
|
||||
* function declaration statements are "hoisted" (level up) to top of enclosing block.
|
||||
* All function in a JS block will be defined before JS interpreter start execution
|
||||
|
||||
### 8.1.2 Function Expressions
|
||||
|
||||
Function Expression (FE 函数表达式) vs Function Declaration (FD 函数声明):
|
||||
* FE appear within context of a larger expression
|
||||
*
|
Loading…
Reference in New Issue