ここで、あなたが気付いているかもしれないし、気付いていないかもしれない JavaScript 関数の引数変数の興味深い動作をいくつか示します。
function foo(bar) {
console.log('bar was:', bar);
arguments[0] = 'zap';
console.log('bar now:', bar);
}
foo('bam');
// bar was: bam
// bar now: zap
ご覧のとおり、bar
変数は別の値を指しています。
そういう振る舞いをちょっと変わった形で利用したいのですが、どうにかして関数スコープ外から引数の値を変更できないか知りたいです。
呼び出し/適用、またはその他のトリッキーな js 機能を使用している可能性がありますか?
したがって、関数の引数の値は、呼び出し後に変更できます。たとえば、次のようになります。
function chooseNumber(number) {
setInterval(function() {
console.log('I choosed:', number)
}, 1000)
}
chooseNumber(1);
// I choosed: 1
// I choosed: 1
// I choosed: 1
// ...
次に、考えを変えることにした場合、初期関数が出力されるようにするにはどうすればよいですか。
// I choosed: 2
// I choosed: 2
// I choosed: 2
// ...