1

関数を最初に実行するときに別のことをしたい場合は、関数を実行するたびにチェックして、それが初めてかどうかを判断するか、関数を変更することができます。このようなもの:

foo=function(a,b){
    ...do something1...
    foo=_foo;
}
_foo=function(a,b){
    ...do something2...
}

これは悪いですか?もしそうなら、なぜですか?これを行うより良い方法はありますか?他の言語のポイントが考慮されますが、私は特にJavaScriptでこれを実装しようとしています.

4

1 に答える 1

1

これは厳密な意味での「自己変更」関数ではありません。その場でコードを変更するのではなく (それは悪いことです)、関数名に別の値を割り当てるだけです。これはほとんどの場合問題なく、ポリモーフィック コードを非常にシンプルかつエレガントにします。意図を明確にするために、「初めて」のコードを別の関数に分解できます。

function firstTimeFoo() {
    .....
    foo = normalFoo
}

function normalFoo() {
    ...
}

foo = firstTimeFoo
于 2014-01-06T20:08:55.887 に答える