function House(){
var count =0; //函式內要用到的變數
function countAnimal(){ //真正要執行的函數
count ++;
console.log(count+'dogs');
}
return countAnimal //執行完後把這個函式回傳出來
}
const FunctionName = House(); //有點拆封的感覺,這時的AAA會等於內部真正執行函數
FunctionName(); // 1 dogs
//所以執行一次就會count++一次。而var count 只會做在 const AAA內行一次。
More const(就算多個Function 使用同一個House()
,也不會污染變數):
function House(){
var count =0; //函式內要用到的變數
function countAnimal(){ //真正要執行的函數
count ++;
console.log(count+'dogs');
}
return countAnimal //執行完後把這個函式回傳出來
}
const FunctionName1 = House();
const FunctionName2 = House();
const FunctionName3 = House();
FunctionName1(); //1 dogs
FunctionName1(); //2 dogs
FunctionName2(); //1 dogs
FunctionName3(); //1 dogs
function House(Animal) {
var count = 0;
function countAnimal() {
count++;
console.log(count +' '+Animal);
}
return countAnimal
}
const FunctionName = House('Cat');
FunctionName(); // 1 Cat
FunctionName(); // 2 Cat
FunctionName(); // 3 Cat
const FunctionName2 = House('Dog');
FunctionName2(); // 1 Dog
FunctionName2(); // 2 Dog
FunctionName2(); // 3 Dog
function createCounter(name){
var count=0
//把此function 變成匿名函式
return function(){
count++;
console.log(count + ' ' + name)
}
}
const Animal1 = createCounter('Cat');
const Animal2 = createCounter('Dog');
const Animal3 = createCounter('Man');
Animal1();
Animal1();
Animal3();
Animal2();