Я использую только jQuery для записи кода JavaScript. Одной вещью, которая смущает меня, являются эти два подхода записи функций,
Первый подход
vote = function (action,feedbackId,responseDiv)
{
alert('hi');
return feedbackId;
}
Второй подход
function vote(action, feedbackId,responseDiv)
{
alert('hi');
return feedbackId;
}
Каково различие между двумя и почему нужно использовать первый подход или второй подход?
Первый - это функциональное выражение , присвоенное к переменной VOLOVE
, второй - это объявление функции .
Основное отличие заключается в том, что функциональные операторы оцениваются в времени анализа, они доступны до его декларации во время выполнения.
См. Также:
Посмотрите на класс 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
Второе является объявлением простой функции.
function myFunction() {}
... называется "декларация функции".
var myFunction = function() {};
... называется "выражением функции".
Они очень похожи; однако:
Декларация функции может быть объявлена после , на которую делается ссылка, в то время как выражение функции должно быть объявлено до того, как на него будет сделана ссылка:
// OK
myFunction();
функция myFunction() {}
// Ошибка
myFunction();
var myFunction = function() {};
Поскольку выражение функции является оператором, за ним должна следовать полустолбцы.
См. Конструктор функции против объявления функции против выражения функции в Mozilla Developer Center для получения дополнительной информации.