먼저 예를 들어보겠습니다. 이 함수의 기능은 배열 요소의 합계를 반환하는 것입니다.
function sumArray(arr) { var 합계 = 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
변수에 할당되므로 익명 함수라고 합니다. 마찬가지로 이 함수는 이 명령문 이후에만 호출될 수 있습니다.
var 함수 = 함수(a,b) { return a>b?a:b; }; console.log(funct(1,2));//
출력 요약 2: 표현식을 사용하여 함수를 정의하면 즉시 사용할 수 있습니다.
네
번째 훈련에서 우리는 객체가 자신의 메소드를 가질 수 있다는 것을 소개했습니다. 물론 이것도 함수입니다. 이 함수의 호출은 이전 두 수준에서 정의된 함수와 약간 다릅니다.
//함수 정의: 세 숫자의 최대값 찾기 function max(a,b,c) { 만약(a > b) { 만약(a > c) 반환하다; 또 다른 c를 반환; } 또 다른 { 만약(b > c) b를 반환; 또 다른 c를 반환; } } //이 함수 호출 var result = max(1,2,3);//결과는 3입니다. console.log(result);//Output 3
함수 호출 시 형식 매개변수와 동일한 개수의 특정 값을 전달해야 합니다. 위 함수에는 3
매개변수가 있으므로 아래 호출 시 특정 값 3
를 전달해야 합니다. 1
매개변수 a
에 전달되고, 2
매개변수 b
에 전달되고, 3
매개변수 c
에 전달됩니다. 함수의 반환 값은 할당 기호 =
통해 변수 result
에 전달됩니다. 함수 본문에 return
키워드가 없으면 undefined
반환됩니다.
객체에 정의된 함수 호출:
var ob = { 아이디:1, getMax:함수(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(a); console.log(b); console.log(c); } myFunction(1,2,3);
실제 매개변수 1
형식 매개변수 a
에 전달되고, 실제 매개변수 2
형식 매개변수 b
에 전달되며, 실제 매개변수 3
은 형식적 매개변수 c
. 실제 매개변수의 개수가 형식 매개변수보다 적으면 undefined
값이 올바른 형식 매개변수에 전달됩니다. 예:
function myFunction(a,b,c) { console.log(a); console.log(b); console.log(c); } myFunction(1,2);
실제 매개변수 1
형식 매개변수 a
로 전달되고, 실제 매개변수 2
형식 매개변수 b
로 전달되며, undefined
매개변수 c
로 전달됩니다. 오른쪽의 매개변수에만 데이터를 전달하려면 처음 몇 개의 실제 매개변수에 undefined
전달하면 됩니다. 예:
function myFunction(a,b,c){ console.log(b); console.log(c) } myFunction(undefine,1,2)
; 충분히 엄격한 경우 가장 좋은 방법은 undefined
값이 전달될 수 있는 형식 매개변수에 대한 기본값을 설정하는 것입니다. 예:
function getSum(a,b,c) { if(c === 정의되지 않음) c = 0; console.log(a+b+c); } myFunction(1,2);
arguments
JavaScript
모든 것은 객체이며, 실제 매개변수도 객체 입니다. (실제 배열이 아닌 배열과 유사) 실제 매개변수는 왼쪽에서 오른쪽으로 arguments[0]、arguments[1]...
arguments.length
실제 매개변수의 수를 나타냅니다.
//매개변수의 합 찾기 function getSum() { var aLength = 인수.길이; var 합계 = 0; for(var i = 0;i < aLength;i++) { 합계 += 인수[i]; } return sum; } console.log(getSum(1,2,3,4,5))//Output 15.
여기서 형식 매개변수는 직접 생략되고 arguments[i]
로 표시됩니다.
복잡한 JavaScript
개발자는 각각의 실제 매개변수와 형식 매개변수 간의 일치성을 확인해야 하는데 이는 매우 비효율적입니다. 좋은 해결책은 객체를 매개변수로 사용하는 것입니다. 그러면 함수는 객체의 속성 이름을 기반으로 매개변수에 대해 작동합니다.
함수 myFunction(obj) { console.log(obj.name); obj.번호++; return obj.number; } myObj = {name:"myObj",number:34}; myFunction(myObj);//Output myObj console.log(myObj.number);//Output 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);//Return 2 getM(getMin,1,2);//Return 1
함수 a
의 이름( getMax
또는 getMin
)을 함수 b
에 전달합니다. ( getM()
) 그런 다음 b
함수 내에서 전달된 a
함수를 호출하여 관련 결과를 얻습니다.