※ タイトル変更しました
しっくりこない事
例えば、
JSprimerより引用
const createCounter = () => {
let count = 0;
return function increment() {
// 変数`count`を参照し続けている
count = count + 1;
return count;
};
};
// countUpとnewCountUpはそれぞれ別のincrement関数(内側にあるのも別のcount変数)
const countUp = createCounter();
const newCountUp = createCounter();
// 参照してる関数(オブジェクト)は別であるため===は一致しない
console.log(countUp === newCountUp);// false
// それぞれの状態も別となる
console.log(countUp()); // => 1
console.log(newCountUp()); // => 1
といった場合に、何が出来るのかは分かる。
?なのは、
countUp()
やnewCountUp()
を呼ぶたびに、なぜlet count = 0;
が実行されないのか?ということ。
毎回count
が初期化されてしまうのでは?と思ってしまう・・・。
これだって、
JSprimerより引用
function greaterThan(n) {
return function(m) {
return m > n;
};
}
// 5より大きな値かを判定する関数を作成する
const greaterThan5 = greaterThan(5);
console.log(greaterThan5(4)); // => false
console.log(greaterThan5(5)); // => false
console.log(greaterThan5(6)); // => true
const時の5は、普通にfunction greaterThan(n)
内n
に設定されていると思うが、
以降の3回の呼び出しではm
に代入されているようだし・・・
現時点での自分の理解としては、
constで定義した後の呼び出しでは、return
文しか実行されない??