Сначала приведем пример. Функция этой функции — вернуть сумму элементов массива
function sumArray(arr) {; вар сумма = 0; for(var i = 0,aLength = arr.length;i < aLength;i++) { сумма += arr[i]; } return sum; }
После ключевого слова function
стоит пробел. sumArray
— это имя функции. Соглашение об именовании такое же, как и для имен переменных: оно может содержать только буквы, цифры, символы подчеркивания и знаки доллара. число и не может быть ключевым словом.
Параметры в круглых скобках, также называемые формальными параметрами , требуют только имени параметра. Параметры могут иметь значения 0
, 1
или более, разделенные знаком ,
а {}
содержит тело функции . Содержит одно или несколько операторов. Тело функции используется для реализации функции функции.
За ключевым словом return
следует возвращаемое значение функции, и функция также может не иметь возвращаемого значения. После завершения выполнения функции оператор return
прекратит выполнение, а оператор, расположенный ниже return
больше не будет выполняться . Возвращаемое значение — это результат функции.
Определенную таким образом функцию можно вызывать как до, так и после определения функции , при условии, что функция и оператор, вызывающий функцию, находятся в одном исходном файле.
, чтобы определить функцию с помощью выражения, то есть использовать выражение присваивания для присвоения функции переменной . Фактически это рассматривается как переменная. При этом функция может иметь имя или не иметь имени. Функция без имени называется анонимной функцией .
var funct = function getMax(a,b) { return a>b?a:b; };//Обратите внимание, что точка с запятой после этого не может отсутствовать, поскольку мы определяем переменную!
В отличие от определения ее с помощью оператора функции , функцию можно вызывать только после оператора определения функции. И при вызове можно использовать только имя переменной funct
, а имя функции getMax
использовать нельзя, например:
var funct = function getMax(a,b) {.
вернуть a>b?a:b; }; console.log(funct(1,2));//Вывод 2
function
:var funct = function(a,b) { return a>b?a:b; };
У этой функции нет имени. Она присвоена переменной funct
, поэтому называется анонимной функцией. Аналогично, эту функцию можно вызвать только после этого оператора.
вар funct = функция (a, b) { return a>b?a:b; }; console.log(funct(1,2));//
Краткое описание вывода 2: определение функции с помощью выражения можно использовать только после определения. использоваться в этом операторе. Затем вызовите функцию.
В четвертом обучении мы познакомили вас с тем, что объекты могут иметь свои собственные методы, конечно, это тоже функция. Вызов этой функции немного отличается от функций, определенных на двух предыдущих уровнях.
//Определение функции: найти максимальное значение трех чисел function max(a,b,c) { если (а > б) { если (а > с) вернуть а; еще вернуть с; } еще { если (б > с) вернуть б; еще вернуть с; } } //Вызов этой функции var result = max(1,2,3);//результат равен 3 console.log(result);//Вывод 3
При вызове функции вам необходимо передать то же количество конкретных значений, что и формальные параметры. Вышеупомянутая функция имеет 3
параметра, поэтому при вызове ниже передайте 3
конкретных значения. значения, 1
передается в параметр a
, 2
передается в параметр b
, 3
передается в параметр c
. Возвращаемое значение функции передается переменной result
через символ присваивания =
. Если в теле функции нет ключевого слова return
, будет возвращено undefined
.
Вызов функций, определенных в объекте:
var ob = { идентификатор: 1, getMax:function(a,b) { вернуть a>b?a:b; } }; var result = ob.getMax(2,1); //Значение результата равно 2 var result1 = ob["getMax"](2,1);//Значение result1 также равно 2.
Отличие от Вышеупомянутое заключается в том, что здесь. Чтобы найти функцию, вам нужно использовать对象名.函数名
или对象名["函数名"]
, остальные одинаковы.
В большинстве языков программирования проверяются количество и тип фактических параметров, передаваемых при вызове функции, но JavaScript
не проверяет ни тип, ни количество фактических параметров.
Фактические параметры в JavaScript
будут соответствовать формальным параметрам в порядке слева направо , например:
function myFunction(a,b,c) { console.log(а); console.log(б); console.log(c); } myFunction(1,2,3);
Фактический параметр 1
передается в формальный параметр a
, фактический параметр 2
передается в формальный параметр b
, а фактический параметр 3
передается в формальный параметр c
. Когда количество фактических параметров меньше формальных параметров, undefined
значение будет передано правому формальному параметру. Например:
функция myFunction(a,b,c) { console.log(а); console.log(б); console.log(c); } myFunction(1,2);
Фактический параметр 1
передается в формальный параметр a
, фактический параметр 2
передается в формальный параметр b
, а undefined
передается в формальный параметр c
. Если вы хотите передать данные только в параметры справа, вы можете передать undefined
первым нескольким фактическим параметрам. Например:
function myFunction(a,b,c){ console.log(a); console.log(b); console.log(c); } myFunction(undefined,1,2)
; Если это достаточно строго, то лучше всего установить значение по умолчанию для формальных параметров, которым могут передаваться undefined
значения. Например:
функция getSum(a,b,c) { если (с === не определено) с = 0; console.log(a+b+c); } myFunction(1,2);
Все JavaScript
является объектом, и фактический параметр также является объектом . У этого объекта есть специальное arguments
. рассматриваться как массив (подобный массиву, а не настоящий массив), фактическими параметрами являются arguments[0]、arguments[1]...
слева направо, arguments.length
представляет количество фактических параметров.
//Находим сумму параметров function getSum() { вар aLength = аргументы.длина; вар сумма = 0; for(var i = 0;i <aLength;i++) { сумма += аргументы[я]; } return sum; } console.log(getSum(1,2,3,4,5))//Вывод 15.
Формальные параметры здесь напрямую опущены и представлены arguments[i]
.
Сложные JavaScript
Разработчикам приходится проверять соответствие каждого фактического параметра формальному параметру, что очень неэффективно. Хорошим решением является использование объекта в качестве параметра, и функция будет работать с параметром на основе имени свойства объекта.
функция myFunction(obj) { console.log(obj.name); объект.номер++; return obj.number; } myObj = {name:"myObj",number:34}; myFunction(myObj);//Вывод myObj console.log(myObj.number);//Вывод 35
функции (называемой a
для удобства написания) могут использоваться как параметры другой функции (называемой функцией b
), и функция b
, наконец, может возвращать определенное значение.
В принципе, функция b
вызывает функцию a
в теле своей собственной функции, поэтому имя функции a
необходимо передать функции b
в качестве фактического параметра. Следующим образом:
//Находим максимальное значение function getMax(a,b) { return a>b?a:b } //Находим минимальное значение function getMin(a,b) { return a<b?a:b; } //Следующая функция принимает функцию в качестве параметра и, наконец, возвращает значение function getM(func,num1,num2) { return func(num1,num2); } getM(getMax,1,2);//Вернем 2 getM(getMin,1,2);//Вернем 1
Мы передаем имя функции a
( getMax
или getMin
) в функцию b
( getM()
), а затем вызовите переданную a
внутри функции b
, чтобы получить соответствующие результаты.