「Javascript: The Definitive Guide」6E を読んでいて、次の例に出くわしました。
var cookies = (function() {
var cookies = {};
var all = document.cookie;
if ( all === "" )
return cookies;
var list = all.split("; ");
for ( var i = 0; i < list.length; i++ )
{
var cookie = list[ i ];
var p = cookie.indexOf( "=" );
var name = cookie.substring( 0, p );
var value = cookie.substring( p + 1 );
value = decodeURIComponent( value );
cookies[ name ] = value;
}
return cookies;
}());
彼がここで何をしたかがわかります。彼は関数を作成し、すぐに呼び出しました。この場合、なぜ彼がそんなことをするのか理解できません。「$」演算子を隠すために jQuery でこの慣用句が使用されているのを見たことがありますが、ここでは何も隠していません。彼が作成する唯一の変数は「cookies」であり、それが彼が入力している変数です。これが次のものとどのように違うのかわかりません:
var cookies = {};
var all = document.cookie;
if ( all !== "" )
{
var list = all.split("; ");
for ( var i = 0; i < list.length; i++ )
{
var cookie = list[ i ];
var p = cookie.indexOf( "=" );
var name = cookie.substring( 0, p );
var value = cookie.substring( p + 1 );
value = decodeURIComponent( value );
cookies[ name ] = value;
}
}
グローバルスコープの「すべて」の導入以外は?私が気付いていないこの特定の例で、彼が回避しているいくつかのより深いコーナーケースはありますか?