함수 정의
자바스크립트에서 함수를 정의하는 방법은 다음과 같습니다.
function abs(x) {
if (x >= 0) { return x;
} else { return -x;
}
}
위의 abs() 함수 정의는 다음과 같습니다.
function은 이것이 함수 정의임을 나타냅니다. abs는 함수의 이름입니다. (x) 함수의 매개변수는 괄호 안에 나열됩니다. , 여러 매개변수는 다음으로 구분됩니다. { ... } 사이의 코드는 함수 본문으로, 여러 문을 포함하거나 심지어 문이 없을 수도 있습니다.
함수 본문 안의 명령문이 실행될 때 return이 실행되면 함수가 실행되고 결과가 반환된다는 점에 유의하세요. 따라서 조건부 판단과 루프를 통해 매우 복잡한 로직을 함수 내부에서 구현할 수 있습니다.
return 문이 없으면 함수 실행 후 결과가 반환되지만 결과는 정의되지 않습니다.
자바스크립트 함수도 객체이기 때문에 위에서 정의한 abs() 함수는 실제로는 함수 객체이고, 함수명인 abs는 함수를 가리키는 변수라고 볼 수 있습니다.
그래서 함수를 정의하는 두 번째 방법은 다음과 같습니다.
var abs = function (x) {
if (x >= 0) { return x;
} else { return -x;
}
};
이렇게 하면 function (x) { ... } 는 익명 함수이므로 함수 이름이 없습니다. 하지만 이 익명함수는 변수 abs에 할당되어 있으므로, 변수 abs를 통해 함수를 호출할 수 있습니다.
위의 두 정의는 완전히 동일합니다. 두 번째 방법에서는 전체 구문에 따라 함수 본문 끝에 ;를 추가하여 할당 문의 끝을 표시해야 합니다.
함수는 JavaScript 언어의 핵심 중 하나입니다. 기본 구문은 다음과 같습니다.
function functionName(arg0, arg1, ...) {
문
}
문법 해석
함수 사용 키워드 정의 함수
함수 키워드 뒤에는 공백과 함수 이름이 옵니다.
함수 이름 뒤에는 괄호 쌍이 옵니다. arg0과 arg1은 함수의 매개변수를 ","로 구분합니다. 기호 매개변수 수는 0~25개일 수 있습니다. 0은 매개변수가 없음을 의미합니다. 매개변수가 없는 경우 () 괄호는 생략할 수 없습니다. 25개를 초과하는 매개변수는 JavaScript에서 무시됩니다
{}는 함수
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> <script type="text/javascript"> function hello(name){ document.write((name + ",你好!")); } </script> </head> <body> <input type="button" onclick="hello('小明')" value="确定"/> </body> </html>
함수 표현식
JavaScript 함수는 표현식을 통해 정의할 수 있습니다.
함수 표현식은 변수에 저장될 수 있습니다:
var x = function (a, b) {return a * b};
함수 표현식이 변수에 저장된 후 변수를 함수로 사용할 수도 있습니다:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> var x = function (a, b) {return a * b}; document.getElementById("demo").innerHTML = x(6, 9); </script> </body> </html>
함수 승격(호이스팅)
이전 튜토리얼에서 우리는 이미 "호이스팅"에 대해 배웠습니다.
호이스팅은 현재 범위를 앞으로 끌어올리는 JavaScript의 기본 동작입니다.
호이스팅은 변수 선언과 함수 선언에 적용됩니다.
따라서 함수는 선언되기 전에 호출될 수 있습니다.
myFunction(5);
function myFunction(y) {
Return y * y;
}
함수를 사용하여 함수를 정의할 때는 호이스트할 수 없습니다. 표현.
arguments
JavaScript에는 함수 내에서만 작동하고 항상 현재 함수의 호출자가 전달한 모든 매개 변수를 가리키는 무료 키워드 인수도 있습니다.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> <script type="text/javascript"> function foo(x) { alert(x); // 10 for (var i=0; i<arguments.length; i++) { alert(arguments[i]); // 10, 20, 30 } } foo(10, 20, 30); </script> </head> <body> </body> </html>
Function은 객체입니다
JavaScript에서 typeof 연산자를 사용하여 함수 유형을 결정하면 "function"이 반환됩니다.
하지만 JavaScript 함수는 객체로 더 정확하게 설명됩니다.
JavaScript 함수에는 속성과 메서드가 있습니다.
arguments.length 속성은 함수 호출 중에 수신된 매개변수 수를 반환합니다.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> function myFunction(a, b) { return arguments.length; } document.getElementById("demo").innerHTML = myFunction(4,7,3); </script> </body> </html>