Что означает «анонимная функция» в Javascript? - PullRequest
1 голос
/ 02 февраля 2012

Я немного дурачился с JS и нашел это:

enter image description here

Кто-нибудь хочет объяснить?

Ответы [ 4 ]

1 голос
/ 02 февраля 2012

Это особенность способа, которым реализации нескольких браузеров Function.prototype.toString отображают функции, созданные с помощью конструктора Function, но это несущественно и не отображается ни в одной версии спецификации EcmaScript.

Обычно именованная функция

function anonymous(x) {
  if (x) {
    alert('hi');
  } else {
    anonymous(!x);
  }
}

будет alert независимо от передаваемого значения, потому что имя функции может использоваться для ее рекурсивного вызова (по модулю ошибок IE), но это не относится к anonymous, созданному с помощью new Function.

(new Function('x', 'if (x) alert("hi"); else anonymous(!x);'))(false)

завершается с ошибкой.

1 голос
/ 02 февраля 2012

Когда вы вызываете функцию Function() (которая является конструктором Function объектов), она возвращает вам функцию. Функции, создаваемые таким образом динамически, не имеют имени, поэтому ему присваивается имя «анонимный».

См .: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function

1 голос
/ 02 февраля 2012

Анонимная функция - это функция, у которой нет имени.Например, вы можете сделать:

(function(){ alert("Hello World!") })();

Это создает функцию без имени и немедленно вызывает ее.Если код вызвал возникновение исключения, среда выполнения JavaScript сообщит об ошибке в анонимной функции.

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

(new Function("x", "y", "return x+y"))(1, 2);

Это почти то же самое, что написать:

(function(x, y) { return x + y })(1, 2);

Thisдает вам возможность взглянуть на объектно-ориентированную природу функций JavaScript.

0 голосов
/ 02 февраля 2012

Анонимная функция - это функция без имени.Они не являются специфическими для Javascript, см. http://en.wikipedia.org/wiki/Anonymous_function

Для JS, в основном вместо этого:

function myFunc() { }

вы можете сделать:

var myFunc = function() { }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...