Определение функции JavaScript
1: вызовите функцию ключевого слова для построения, например:
Расстояние функции (x1, x2, y1, y2)
{{
var dx = x2-x1;
var dy = y2-y1;
Return math.sqrt (dx*dx+dy*dy);
}
2: используйте функцию построения Funion ()
var f = новая функция*"x", "y", "return x*y");
Эта строка кода создает новую функцию, которая в основном эквивалентна функциональному определению определения синтаксиса, с которой вы знакомы:
Функция f (x, y)
{{
Вернуть x*y;
}
Конструктор functino () может принять любые параметры нескольких строк. Основной корпус функции во время его последнего параметра, который может содержать любое оператор JavaScript, разделить число между операторами. Другие параметры используются для объяснения строки имени параметра формы, определенной функцией. Если вы определяете функцию без параметров, вы можете передать только строку (то есть субъект функции) конструктору.
Обратите внимание, что ни один из параметров, передаваемых функции конструктора (), не используется для объяснения названия функции для создания. USEN -НЕИЗВЕСТНАЯ ФУНКЦИЯ, созданная Constructor Function (), иногда становится «анонимной функцией».
Возможно, вы захотите знать, какова используется функция конструктора function (). Почему бы не только использовать оператор функции для определения всех функций? Причина заключается в том, что конструктор функции () позволяет нам динамически строить и компилировать функцию, которая не будет ограничивать нас на корпус функции, предварительно связанный с помощью оператора функции. Негативным воздействием воздействия является то, что каждый раз, когда функция называется, конструктор функции () должен составлять его. Следовательно, мы не должны часто вызывать этот конструктор в корпусе петли или в функциях, которые часто используются.
Другая причина, использующая функцию построения функции (), заключается в том, что она может определить функцию как часть выражения JavaScript, а не определение оператора.
3: Прямое количество функций
Прямое количество функции - это выражение, которое определяет анонимную функцию. Синтаксис прямого количества функции очень похож на оператор функции, но он используется в качестве выражения, а не оператора, и ей не нужно указывать имя функции. Следующий трех -линейный код использует оператор function (), конструктор function () и функцию функции для определения трех в основном одинаковых функций:
функция f (x) {return x*x};
var f = новая функция ("x", "return x*x;");
var f = function (x) {reurn x*x};
Хотя функция напрямую создает неназванную функцию, ее синтаксис также предусматривает, что она может указать имя функции, которое очень полезно при написании и вызове своей рекурсивной функции. Например:
var f = faction fact (x) {if (x <= 1) return 1;
Приведенный выше код определяет неназванную функцию и хранится в переменной F для ее ссылки. Это на самом деле не создает функцию, называемую FACT (), но позволяет функции использовать имя для цитирования самого. Тем не менее, следует отметить, что предыдущая версия JavaScript1.5 неправильно реализовала функциональную функцию этого имени.
Использование функции функции очень похоже на метод создания функции с функцией построения функции (). Поскольку все они создаются выражением JavaScript, а не созданы операторами, способ их использования более гибкий, особенно для функций, которые используются только один раз и не должны быть названы. Например, функция, указанная в функции, может быть сохранена в переменной, передана в другие функции и даже непосредственно вызовы:
a [0] = function (x) {return x*x;};
A.sort (function (a, b) {return ab;});
var tensquared = (function (x) {return x*x;});
Как и конструктор функции (), функция напрямую создает неназванную функцию и не будет автоматически хранить эту функцию в атрибут. Однако по сравнению с конструктором функции (), прямое количество функции имеет важное преимущество. Субъект функции, созданной функцией Function (), должна быть объяснена строкой, и этот способ выразить длинную и сложную функцию является неуклюжей. Но основной корпус функции используется стандартным синтаксисом JavaScript. И прямое количество функции разрешается один раз, а код JavaScript передается функции Function (), создавающей строку для конструктора function (), проанализируется только один раз каждый раз, когда вызывается конструктор.
В JavaScript1.1 функция конструктора () может использоваться для определения функций. Вы должны обратить внимание на важные различия между этими двумя методами.
Во -первых, функция конструктора () позволяет динамическому созданию и компиляции кода JavaScript во время выполнения. Но прямое количество функции является статической частью структуры функции, как и оператор функции.
Во -вторых, как неизбежный результат первого различия, каждый раз, когда функция конструктора () используется для анализа корпуса функции и создания нового объекта числа Ист -Хана. Если вызов конструктора появляется в цикле или появляется в функции, которую часто называют, эффективность этого метода очень низкая. С другой стороны, вложенная функция, которая может непосредственно отображаться в цикле и функциях, не переоценивается при каждом вызове, и новый объект функции не создается, когда встречается с прямой суммой функции.
Третья точка между количеством конструктора Function () и функцией заключается в том, что функция, созданная функцией конструктора (), не использует прицел фразы. код объяснен:
var y y = "global";
Функция conforringfunction () ()
{{
var y y = "local";
Вернуть новую функцию («return y»);
}
// Эта строка кода будет отображать «глобальный», потому что функция, возвращаемая конструктором function (), не использует локальную область.
// Если вы используете прямую сумму функции, эта строка кода может отображать «локальный».
оповещение (Confructure ());