В Javascript вы можете иметь одиночные кодовые блоки, то есть блоки кода без if
, function
или что-то вроде предшествующего им, помещенные произвольно в код, например:
var a = 3,
b = 4;
{
a = 50;
b = 50;
}
alert(a + b); //alerts 100
Я знаю, что некоторые другие языки имеют это (я думаю, что С++ делает), и они используют его для управления областью: переменные, объявленные внутри одиночного блока кода, не могут быть доступны за его пределами. Но поскольку Javascript имеет область действия функции, а не область блока, вам необходимо использовать функцию самозапускания (function(){})()
для достижения того же эффекта.
Есть ли цель для этой конструкции? Вы когда-нибудь видели, чтобы кто-нибудь использовал его? Означает ли спецификация? Это просто побочный эффект грамматики, имеющей какое-то общее правило о кодовых блоках?