(function(i){
console.log(i)
})(i);
Это то, что называется самопроизвольной анонимной функцией или функцией, которую вы не должны указывать на имя. Он также выполняется сразу после определения. Если вы посмотрите на первый набор круглых скобок, они обернут ключевое слово функции, список аргументов и функцию defintion, а второй набор круглых скобок - это место, где вы передаете аргумент.
/* self-executing anonymous function definition */
( function(i){
console.log(i)
}
)
/* pass argument i into the anonymous function and execute */
(i);
Я разделил это на несколько больше с пробелами, чтобы было легче разбить его визуально.
Теперь, поскольку параметр функции и аргумент имеют одно и то же имя, определение может ввести в заблуждение, если кто-то увидит это впервые. Так вот, что же пример, за исключением того, что давайте просто передать фактическое значение в функцию:
(function(i){
console.log(i) // prints '5'
})(5);
Это IIFE: http://benalman.com/news/2010/11/immediately-invoked-function-expression/ –
Возможный дубликат [Что означает этот фрагмент JavaScript?] (Http://stackoverflow.com/questions/6771406/what-do-this-javascript-snippet-mean) –
и [Как работает анонимная функция в JavaScript?] (http://stackoverflow.com/q/1140089/218196) –