Javascriptでclosureと、applyメソッド、callメソッドを使う

jsが持つ関数スコープを利用してクロージャー(関数閉包)を書くことができる。

js closure

上記の例では、関数countの中のローカル変数iを参照できるのは、無名関数が入っている変数xを実行したときのみである。変数iをグローバル変数にすると他の関数からの参照が可能になり、意図せずに値を変更してしまう可能性がある。

 

jsの全ての関数は組み込み関数Functionを継承しており、組み込み関数Functionが持つapplyメソッド、callメソッドも継承している。

callメソッド:現在のオブジェクトが持っていないメソッドを適用する。

js use call method

applyメソッド:callメソッドと同じように現在のオブジェクトの代わりに、他のオブジェクトのメソッドを適用できる。引数に可変長の配列をひとつとる点がcallと異なる。以下のような感じ。

js use apply method