Какова цель одиночных блоков кода в Javascript?

В Javascript вы можете иметь одиночные кодовые блоки, то есть блоки кода без if, function или что-то вроде предшествующего им, помещенные произвольно в код, например:

var a = 3,
b = 4;
{
  a = 50;
  b = 50;
}
alert(a + b); //alerts 100

Я знаю, что некоторые другие языки имеют это (я думаю, что С++ делает), и они используют его для управления областью: переменные, объявленные внутри одиночного блока кода, не могут быть доступны за его пределами. Но поскольку Javascript имеет область действия функции, а не область блока, вам необходимо использовать функцию самозапускания (function(){})() для достижения того же эффекта.

Есть ли цель для этой конструкции? Вы когда-нибудь видели, чтобы кто-нибудь использовал его? Означает ли спецификация? Это просто побочный эффект грамматики, имеющей какое-то общее правило о кодовых блоках?

Ответы

Ответ 2

Обновление (так как этот вопрос показывает высокий уровень в Google для "блока кода javascript" ):

С введением ключевого слова let в ECMAScript 6 кодовые блоки также могут использоваться для ограничения объема переменных.

{
    let x = 20;
    alert(x) // 20
}
alert(x) // undefined

Ответ 3

Только читаемость кода, ничего более.

Они даже не дают вам преимуществ закрытия:

var c = 'fail';
{
    var c = 123;
}
alert(c); //alerts 123

(посмотреть его в прямом эфире)

Ответ 4

Только читаемость. Кроме этого ничего. Не выполняйте не, так как это невозможно для будущего. Следующие радостно сломаются:

"use strict";

var a = 3,
b = 4;
{
  a = 50;
  b = 50;
}
alert(a + b); //alerts 100

Я использовал его сам, поскольку он позволял логически разделять функциональность, но больше не выполнялся из-за вышеперечисленного.