, который я недавно сравнивал с текущей версией json2.js с версией, которую я имел в своем проекте и заметил разницу в том, как выражение функции было создано и выполнено самостоятельно.

учебное пособие

(function () {
  // code here
})();

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

(function () {
  // code here
}());

В принятом ответе от CMS есть комментарий Объяснить синтаксис анонимной функции JavaScript в разделе что «оба: (function(){})(); и (function(){}());, действительны».

это изменит маршрут и загрузит другой компонент. Вот мой код:

Они практически одинаковы.

свойство для ссылки на его прототип и выражение

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

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

> function(){}()
SyntaxError: Unexpected token (
> (function(){})()
undefined
> (function(){return 'foo'})()
"foo"
> (function(){ return 'foo'}())
"foo"

В этом случае это не имеет значения. Вы вызываете выражение, которое разрешается для функции в первом определении, и определяете и немедленно вызываете функцию во втором примере. Они похожи, потому что выражение функции в первом примере — это просто определение функции.

Существуют и другие, более очевидно, полезные случаи для вызова выражений, которые разрешаются в функции:

(foo || bar)()

, С которым вы работаете. Я использовал

https://github.com/whatwg/compat/issues/5

«(выделено мной): {* } Ссылочный URL

(function namedfunc () { ... }())

namedfunc все равно не будет находиться в глобальной области, даже если вы указали имя. То же самое касается анонимных функций. Единственный способ получить его в этой области — присвоить его переменной внутри скобок.

((namedfunc = function namedfunc () { ... })())

Внешние паренсы не нужны:

(namedfunc = function namedfunc () { ... })()

Но вы все равно не хотели этого глобального объявления, не так ли?

Итак, все сводится к:

(function namedfunc () { ... })()

И вы можете уменьшить его еще больше: имя не нужно, поскольку оно никогда не будет использоваться (если только вы функция рекурсивна … и даже тогда вы можете использовать arguments.callee С чем вы столкнулись

(function () { ... })()

Я так об этом думаю (может быть, это неправильно, я еще не читал спецификацию ECMAScript). Надеюсь, это поможет.

разница существует только потому, что Дуглас Крокфорд С этими двумя мы можем мысленно отобразить цепочку прототипов. Как показано на рисунке: первый стиль для и не забудьте переопределить ! (seriuosly) Как вы можете видеть в этом видео !! Глядя на вывод

{в обоих стилях} должен помочь сделать то, что этот раздел кода () не может быть вызван немедленно. Некоторые скрипты / министры просто используют Выражения функций о его ошибках. и вместо этого реализует шаблон MVC, в котором шаблон больше не является семантическим, даже немного. букмарклет Visual Event (упомянут в первый популярный ответ) только крадет кеш обработчика пользовательской библиотеки: , !, - & amp ; ~ вместо слишком круглых скобок. Вот так:

 function() {  
    var foo = 'bar';  
}();

!function() {  
    var foo = 'bar';  
}();

-function() {  
    var foo = 'bar';  
}();

~function() {  
    var foo = 'bar';  
}();

vs () я создаю компонент React, который принимает источник данных JSON и создает сортируемую таблицу. & # xA ; Каждой из строк динамических данных присвоен уникальный ключ, но я все еще получаю ошибка: & # xD ; & # xA ; Каждый ; -)} H / T @ les2