1. 閉包 closures
(1). 閉包是一個函數的組合,它能夠記住外部範圍内的變量
如:function Animal () {
let name = 'cat';
function greeting() {
console.log('Hi, ' + name + '.');
}; // greeting()函數就是一個閉包。它在greeting内部保留了在它之外的name變量。
return greeting;
};
let cat = Animal();
cat(); // Hi, cat.
2. 立即調用函數表達式 IIFE
IIFE,即immediately invoked function expressions。
- 使用IIFE可以避免變量名衝突。
(1). 語法:
(function(){
// statement;
})();
或者:(() => {
// statement;
})();
如:let greet = (function(greeting, name){
return greeting + name;
})('Hi, ', 'lulu');
console.log(greet); // Hi, lulu
(2). 命名的IIFE
- IIFE也可以有名字,只不過這名字只能使用一次。
語法:
(function aName(){
// statement;
})();