Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

クロージャーのサンプルコードの改善案 #997

Open
munierujp opened this issue Nov 5, 2019 · 2 comments
Open

クロージャーのサンプルコードの改善案 #997

munierujp opened this issue Nov 5, 2019 · 2 comments
Labels
Status: Proposal 提案段階の状態

Comments

@munierujp
Copy link
Contributor

munierujp commented Nov 5, 2019

URL : https://github.com/asciidwango/js-primer/blob/master/source/basic/function-scope/README.md

// `increment`関数を定義し返す関数
function createCounter() {
    let count = 0;
    // `increment`関数は`count`変数を参照
    function increment() {
        count = count + 1;
        return count;
    }
    return increment;
}
// `myCounter`は`createCounter`が返した関数を参照
const myCounter = createCounter();
myCounter(); // => 1
myCounter(); // => 2
// 新しく`newCounter`を定義する
const newCounter = createCounter();
newCounter(); // => 1
newCounter(); // => 2
// `myCounter`と`newCounter`は別々の状態持っている
myCounter(); // => 3
newCounter(); // => 3

現在のサンプルコードは上記のように最後の2行が同じ値になるようになっていますが、違う値になるようにしたほうが別々の状態を持っていることがわかりやすいと思います。
たとえば、newCounterのほうの呼び出しを1回減らして、32にするなどです。

// `increment`関数を定義し返す関数
function createCounter() {
    let count = 0;
    // `increment`関数は`count`変数を参照
    function increment() {
        count = count + 1;
        return count;
    }
    return increment;
}
// `myCounter`は`createCounter`が返した関数を参照
const myCounter = createCounter();
myCounter(); // => 1
myCounter(); // => 2
// 新しく`newCounter`を定義する
const newCounter = createCounter();
newCounter(); // => 1
// `myCounter`と`newCounter`は別々の状態持っている
myCounter(); // => 3
newCounter(); // => 2
@azu azu added the Status: Proposal 提案段階の状態 label Nov 7, 2019
@bubbleinwater
Copy link

それぞれにconsole.logも付け足すのは良いことではないですか?
ウェブサイトの元のコードで実行のボタンを押すと3が一つだけ出力されるんですけど、なぜ呼び出しただけで3が出てくるのかわからなくてここに辿り着きました。

@yumetodo
Copy link
Contributor

確かにconsole.logの数が足りないのは疑問がありますね。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Status: Proposal 提案段階の状態
Projects
None yet
Development

No branches or pull requests

4 participants