1. 匿名函數
(1). 匿名函數,即沒有名字的函數。
- 定義匿名函數的語法:
(function (){
//statement;
});
如:let hello = function () {
console.log('Hello, anonymous');
};
hello(); // 'Hello, anonymous'
(2). 匿名函數可以作爲參數
如:setTimeout(function(){
console.log('一秒后執行');
}, 1000);
(3). 調用匿名函數后立即執行
如:let animal = {name: 'cat', age: 7};
(function(){
console.log('小動物是:' + animal.name);
})(animal); // '小動物是:cat'
(4). 箭頭函數表達式
- ES6引入了盡頭函數表達式,方法如下:
傳統方式:let hello = function () {console.log('Hello');};
箭頭表達式:let hello = () => console.log('Hello');
2. 遞歸函數
(1). 遞歸函數是一個可以不斷調用自身的函數
如:function add(num) {
console.log(num);
let addNum = num + 1;
if (num < 9)
add(addNum);
};
add(7); // 7 8 9
3. 默認參數
(1). 用法
- function fn(變量1 = 默認值,變量2 = 默認值2,...) {};
如:function greeting(message = ‘Hi’){
console.log(message);
};
greeting(); // 'Hi'
在沒有傳值的情況下,‘Hi’ 就是message的默認值。
- 若只想傳一個參數給變量,而保留其他默認值時,可以使用undefined作爲想要保留的值。
如:function greeting(message = ‘Hi’){
console.log(message);
};
greeting(undefined); // 'Hi'
- 默認值也可以是函數的返回值。
如:function message (m = greeting()){
console.log(m);};
function greeting () {return 'Hello';};
message(); // 'Hello'
- 還可以利用默認值來强制傳遞參數。
如:function requiredArg() {throw new Error('The argument is required');}
function say(a = requiredArg(), b = requiredArg()){
return a + b;
};
say(); // error
say('hello'); // error
say('hello', 'Sylvia'); //編譯正常,不再報錯
- 默認值不被計算在arguments.length中。
如:function say (message, name = 'Yvonne'){
console.log(arguments.length);
};
say('hello'); // 1
say('hello', 'Sylvia'); // 2