関数定義を即時の匿名関数でラップする利点はありますか?
jsfeatライブラリの例を次に示します。
var get_channel = (function () {
return function(type) {
return (type & 0xFF);
}
})();
それとも、次のことを行う方が良いですか?
var get_channel = function(type) {
return (type & 0xFF);
};
この場合、最初のバージョンを支持する利点はないようです。
- 長くて読みにくいですが、
- クロージャーは外側のアクティベーション オブジェクトへの参照を保持するため、より多くのメモリを消費しますが、そこには有用なデータがありません。
- エンジンがより長いスコープチェーンを通過する必要がある場合、グローバル変数へのアクセスに時間がかかるため、(少なくとも理論的には) 遅くなることがあります。