Как должны быть отформатированы крышки? - PullRequest
6 голосов
/ 03 августа 2011

Я запустил скрипт через JSLint, и он выявил конкретную проблему с размещением скобок.

Я написал:

(function(){})();

И было предложено использовать:

(function(){}());

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

Расширенные формы:

(
  function (p) {
    ...code...
  }
)(param); //parameters after the parens

-vs-

(
  function (p) {
    ...code...
  }(param) //parameters within the parens
);

Ответы [ 2 ]

5 голосов
/ 03 августа 2011

Конкретная проблема, которую JSLint пытается исправить, связана с отсутствием закрытия ;, что может привести к ошибке, когда функция интерпретируется как аргумент:

(function A( arg ){
    // stuff
})

(function B(){
   ...
});

Совершенно верно, Bпередается A как arg.Тем не менее, это часто не тот случай, так как часто они предназначены для самореализации, а завершающий () был забыт.Предлагаемый синтаксис устраняет любую путаницу, которую вы, возможно, случайно забыли выполнить своей функцией, как предполагалось.

Для чего бы то ни было, я почти всегда также использую первый синтаксис;привычка.

0 голосов
/ 03 августа 2011

По словам Крокфорда о http://www.yuiblog.com/crockford/ (не помню, какое видео, но я думаю, что это к началу), это чистый стиль, помогающий облегчить чтение и не связанный с ошибками или проблемами.

Редактировать:

Я думаю, что это в акте III: Функция Ultimate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...