Странный синтаксис JavaScript как это: (функция () {//код}) ();?

Я сначала был представлен svn использование черепахи svn, любил его, и позже компания использовала Визуальный Sourcesafe, как я избежал использовать черепаху.

5
задан Jeff 27 August 2009 в 12:47
поделиться

8 ответов

Функционально это эквивалентно выполнению чего-то вроде:

var myFunc = function(){
    var b = 3;
    a += b;
};

myFunc();

Он заключен в круглые скобки (и в конце), так что функция вызывается немедленно. Как уже говорили другие, эта концепция называется анонимной функцией .

13
ответ дан 18 December 2019 в 05:55
поделиться

Это анонимная функция, которая запускается сразу после создание.

5
ответ дан 18 December 2019 в 05:55
поделиться

Это анонимная функция.

Анонимные функции - это функции, которые динамически объявляются во время выполнения которым не нужно давать имя.

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

Для дальнейшего чтения

Анонимные функции Javascript

Анонимные функции могут помочь в создании кода более кратко при объявлении функции это будет использоваться только в одном месте. Вместо того, чтобы объявлять функция, а затем использовать ее, вы можете сделать оба за один шаг. Это особенно полезно для таких вещей, как объявление события обработчики и назначение методов 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);    
      }    
  }
4
ответ дан 18 December 2019 в 05:55
поделиться

Вы написали анонимную функцию, вызываемую немедленно. Причина этого - использование частных переменных. Если вместо вашего кода будет:

var b = 3;
a += b;

b будет глобальной переменной. Так что, если вам нужна частная переменная глобального кода, это способ сделать это.

2
ответ дан 18 December 2019 в 05:55
поделиться

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.

1
ответ дан 18 December 2019 в 05:55
поделиться

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.

1
ответ дан 18 December 2019 в 05:55
поделиться

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.

1
ответ дан 18 December 2019 в 05:55
поделиться

Ответ Джастина объясняет это довольно хорошо, но я подумал, что просто добавлю эти первые скобки (открывающая перед function ) на самом деле совершенно не нужна для выполнения программы. Однако для удобочитаемости это очень важно! Когда я вижу это:

(function() {

Я знаю , что эта функция вызывается немедленно, без необходимости прокрутки вниз, чтобы найти конец блока. Это важно, потому что иногда вы хотите присвоить возвращаемое значение функции переменной, а иногда вы хотите присвоить переменной функцию . См .:

var x = (function() {
    return 4;
})();

var y = function() {
    return 4;
};

// typeof x == integer (4)
// typeof y == function
1
ответ дан 18 December 2019 в 05:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: