Подтвердить что ты не робот

Какова цель этих лишних фигурных скобок?

Итак, я недавно начал работу на новом месте работы, и я столкнулся с форматом javascript, который заставляет меня подвергнуть сомнению его цель. (в частности, скобки {})

var _occurrences = getOccurrences($('#ddlTours').val());
{
    var _occurrence = getObjectByValue(_occurrences, 'tourID', booking.tourID);
    {
        _occurrenceID = _occurrence.occurrenceID;
    }
}

Для меня это почти похоже на попытку построения объекта. то есть.

var _occurrences : // Ignoring = getOccurrences($('#ddlTours').val());
{
    _occurrence : // Ignoring getObjectByValue(_occurrences, 'tourID', booking.tourID);
    {
        _occurrenceID : _occurrence.occurrenceID;
    }
}

Но, как я понимаю, он выполнит его как.

var _occurrences = getOccurrences($('#ddlTours').val());
var _occurrence = getObjectByValue(_occurrences, 'tourID', booking.tourID);
_occurrenceID = _occurrence.occurrenceID;

Или это так, что _occurrence получает delete и не сидит вокруг как его инкапсулированный, и мы назначаем var, который находится вне инкапсуляции. Это действительно работает как улучшение производительности? то есть.

Global var a = 1
{
    b = someFunction()  // After execution because of encapsulation it poofs???
    for(var c in b)
    {
        a += c.somefunction()
    }
}

Другой вариант - это просто плохой код?

Или, возможно, это подразумевается как логическое разделение кода, чтобы помочь dev?

Мне просто интересно, может ли кто-нибудь пролить свет на это для меня:)

4b9b3361

Ответ 1

Вы правы, чтобы подвергать сомнению эти фигурные скобки. Они ничего не делают. Код внутри фигурных скобок выполняется так же, как если бы скобки не были там. Это явно ошибка, чтобы они были такими.

Как вы уже упоминали, похоже, что кто-то мог подумать, что фигурные скобки будут вводить область видимости блока, возможно, заставляя переменную покидать область видимости после закрытия фигурных скобок. Но JavaScript не имеет возможности блока для переменных var! (Он имеет область блока для let, но только в новых JavaScript-машинах, поддерживающих let.)

Или, может быть, они просто подумали, что это хороший способ документировать, где используются переменные. Это не так.

Добавляя к юмору здесь, код, кажется, не хватает var для _occurrenceID целиком, поэтому он, вероятно, создает глобальную переменную непреднамеренно!

То, как вы переписали код без фигурных скобок, действительно так, как это будет выполняться. Это лучшее представление того, что на самом деле делает код, и как писать код. (Исправлено недостающее var, конечно...)

Ответ 2

Или, возможно, это подразумевается как логическое разделение кода, чтобы помочь dev?

Я собираюсь сделать здесь 2 предположения:

  • разработчик не был некомпетентным
  • вы оставили много строк между коленками

(если 1 неверно, тогда все ставки отключены)

Блоки с закругленными блоками Do-nothing не имеют цели - в различных текстовых редакторах они отмечают разделы, которые могут быть свернуты и, таким образом, удалены из поля зрения. Я часто это делаю, если у меня есть 50 строк, которые я знаю, но мне приходится постоянно прокручивать прошлое. Поместите завитки вокруг содержимого (помните о гнездовании), щелкните значок "свернуть/свернуть" в канаве → код исчезнет. Мой специальный редактор будет помнить сложенные блоки, поэтому мне не нужно повторно складывать каждый раз.

Ответ 3

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

Моя догадка заключается в том, что фигурные скобки и вложенность - только для иллюстрации того, что в списке содержится элемент, содержащий идентификатор. Это может помочь читателю понять, что если они редактируют какой-либо из этого кода или перемещают его, тогда также редактируйте внутренний код, чтобы он соответствовал.

Ответ 4

Эти скобки предназначены для того, чтобы сделать код более читаемым, что думают некоторые программисты. Скобки не имеют ничего общего с какой-либо другой функциональностью. Люди делают код подключенным. Приветствует новый любопытный опыт.:-P

Ответ 5

См. код с представлением компилятора.

Скользящие скобки - это просто определение области. Не больше.

Рассмотрим, вот пример.

for(var c in b)
{
    a += c.somefunction();
}

Этот код похож на

for(var c in b)
    a += c.somefunction();

то есть. по умолчанию для цикла имеет область действия до следующего оператора.

Аналогично,

var _occurrences = getOccurrences($('#ddlTours').val());
{
    var _occurrence = getObjectByValue(_occurrences, 'tourID', booking.tourID);
    {
        _occurrenceID = _occurrence.occurrenceID;
    }
}

Это просто определение области и добавление операторов внутри этой области. Несмотря на то, что вы объявляете переменную в этой области, концепция "Подъем" превратит всю переменную в верхнюю.

Объявление переменной внутри области видимости равно:

if(true){
 var _occurrence = getObjectByValue(_occurrences, 'tourID', booking.tourID);
}

.

Простыми словами,

var _occurrences = getOccurrences($('#ddlTours').val());
{
    var _occurrence = getObjectByValue(_occurrences, 'tourID', booking.tourID);
    {
        _occurrenceID = _occurrence.occurrenceID;
    }
}

равно:

var _occurrences = getOccurrences($('#ddlTours').val());
if(true){
    var _occurrence = getObjectByValue(_occurrences, 'tourID', booking.tourID);
    if(true){
        _occurrenceID = _occurrence.occurrenceID;
    }
}