Понимание неявных точек с запятой и разбора пробелов в ECMAScript

На самом деле я очень часто видел, что это цитируется как причина использования стиля K&R при написании ECMAScript.

function foo () {
  return
    {
      foo: 1
    }
  ;
}

Это не работает в ECMAScript или Javascript: добавление неявной точки с запятой приводит к тому, что функция возвращает undefined. Впрочем, я тоже это вижу постоянно

function bar () {
  var a = "BAR";
  return a
    .toLowerCase()
  ;
}

И мне интересно, почему неявные точки с запятой не приводят к возвращению "BAR", почему там возвращается bar?


person Evan Carroll    schedule 31.05.2011    source источник
comment
Я понимаю, что в основном это то, о чем ваш вопрос, но использование пробелов здесь ужасно.   -  person ACK_stoverflow    schedule 27.01.2012


Ответы (1)


Потому что синтаксис не работает с неявной точкой с запятой в конце строки.

Если добавить точку с запятой:

function bar () {
  var a = "BAR";
  return a;
    .toLowerCase()
  ;
}

вы получите синтаксическую ошибку на следующей строке.

person Guffa    schedule 31.05.2011