Я сначала был представлен svn использование черепахи svn, любил его, и позже компания использовала Визуальный Sourcesafe, как я избежал использовать черепаху.
Функционально это эквивалентно выполнению чего-то вроде:
var myFunc = function(){
var b = 3;
a += b;
};
myFunc();
Он заключен в круглые скобки (и в конце), так что функция вызывается немедленно. Как уже говорили другие, эта концепция называется анонимной функцией .
Это анонимная функция, которая запускается сразу после создание.
Это анонимная функция.
Анонимные функции - это функции, которые динамически объявляются во время выполнения которым не нужно давать имя.
Анонимные функции объявляются с использованием оператор функции. Вы можете использовать оператор функции для создания нового функция везде, где допустимо поставить выражение. Например, вы могли объявить новую функцию как параметр вызову функции или назначить свойство другого объекта.
Для дальнейшего чтения
Анонимные функции могут помочь в создании кода более кратко при объявлении функции это будет использоваться только в одном месте. Вместо того, чтобы объявлять функция, а затем использовать ее, вы можете сделать оба за один шаг. Это особенно полезно для таких вещей, как объявление события обработчики и назначение методов objects.
For example, if we’re creating a constructor function, we’ll need to declare the object’s methods and then assign them to the object’s properties so they can be called outside the object. It’s possible to declare the function and then assign it to a variable as a separate step like this:
function Pet(name, species, hello)
{
this.name = name;
this.species = species;
this.hello = hello;
function sayHello()
{
alert(this.hello);
}
this.sayHello = sayHello;
}
But it’s a bit more convenient and concise to do it all as one step:
function Pet2(name, species, hello)
{
this.name = name;
this.species = species;
this.hello = hello;
this.sayHello = function()
{
alert(this.hello);
}
}
Вы написали анонимную функцию, вызываемую немедленно. Причина этого - использование частных переменных. Если вместо вашего кода будет:
var b = 3;
a += b;
b будет глобальной переменной. Так что, если вам нужна частная переменная глобального кода, это способ сделать это.
It's an anonymous function, that is called directly after creation, then thrown away.
It's inside a parenthesis to prevent a syntax error. Without the parentheses the keyword function
needs to be followed by an identifier.
You can also do like this to put the function in a variable, and then call it:
var x = function() {
var b = 3;
a += b;
}
x();
Notice that the parentheses are not needed when the function
keyword is not first.
Functions in javascript are objects and can be used as objects too. So for example you can do this:
var a = function() {alert("done");};
a();
This is commonly used in various functions where you have to pass some logic inside. For example the "sort" function for arrays expects a function object to be passed inside to determine how to sort the array:
var a = [{id: 15, name: 'test'},
{id: 11, name: 'asd'},
{id: 88, name: 'qweqwe'}];
a.sort(function(a,b) {
if (a.id > b.id) return 1; //Put a after b
if (a.id < b.id) return -1; //Put a before b
if (a.id == b.id) return 0; //Don't make no changes
});
The 'sort' method then invokes the provided function with all kinds of array elements to sort it.
What your example does - it creates a function object and just instantly runs it.
This are anonymous function which is executed in place.The best usage of this is to set some context or environment settings or have some side effect on load.
This are heavily used by Ajax Toolkits like JQuery,Dojo,etc to performs load time magic and workaround many browser quirks and shortcomings.
Ответ Джастина объясняет это довольно хорошо, но я подумал, что просто добавлю эти первые скобки (открывающая перед function
) на самом деле совершенно не нужна для выполнения программы. Однако для удобочитаемости это очень важно! Когда я вижу это:
(function() {
Я знаю , что эта функция вызывается немедленно, без необходимости прокрутки вниз, чтобы найти конец блока. Это важно, потому что иногда вы хотите присвоить возвращаемое значение функции переменной, а иногда вы хотите присвоить переменной функцию . См .:
var x = (function() {
return 4;
})();
var y = function() {
return 4;
};
// typeof x == integer (4)
// typeof y == function