Каково различие между этими двумя функциями/подходами?

Я использую только jQuery для записи кода JavaScript. Одной вещью, которая смущает меня, являются эти два подхода записи функций,

Первый подход

vote = function (action,feedbackId,responseDiv)
{
    alert('hi');
    return feedbackId;
}

Второй подход

function vote(action, feedbackId,responseDiv)
{
    alert('hi');
    return feedbackId;
}

Каково различие между двумя и почему нужно использовать первый подход или второй подход?

7
задан Peter Mortensen 11 April 2015 в 22:38
поделиться

3 ответа

Первый - это функциональное выражение , присвоенное к переменной VOLOVE , второй - это объявление функции .

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

См. Также:

8
ответ дан 6 December 2019 в 15:22
поделиться

Посмотрите на класс LookUp , представленный с Linq в .NET 3,5 - это может быть именно то, что вы ищете: класс Dictionary , который поддерживает несколько предметы на ключ.

Возможно, единственным существенным недостатком является то, что вы должны иметь все свои элементы, доступные в одной партии, так как LookUp является неизменным.

-121--3926415-

Вы не можете «удалить элементы», вы можете остановиться, только чтобы жестко сослаться на них и ждать, пока GC очистит их, так что продолжайте с Google Collections...

-121--1501820-

Первое является выражением функции,

var calculateSum = function(a, b) { return a + b; }

alert(calculateSum(5, 5)); // Alerts 10

Второе является объявлением простой функции.

0
ответ дан 6 December 2019 в 15:22
поделиться
function myFunction() {}

... называется "декларация функции".

var myFunction = function() {};

... называется "выражением функции".

Они очень похожи; однако:

  • Декларация функции может быть объявлена после , на которую делается ссылка, в то время как выражение функции должно быть объявлено до того, как на него будет сделана ссылка:

    // OK
    myFunction();
    функция myFunction() {}
    
    // Ошибка
    myFunction();
    var myFunction = function() {};
    
  • Поскольку выражение функции является оператором, за ним должна следовать полустолбцы.

См. Конструктор функции против объявления функции против выражения функции в Mozilla Developer Center для получения дополнительной информации.

6
ответ дан 6 December 2019 в 15:22
поделиться
Другие вопросы по тегам:

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