1. 함수 선언의 세 가지 방법(함수 선언) 방법 1: function functionName([parameters]){functionBody}
예 D1
function add(a, b)
{
return a b;
}
alert(add(1,2)); // 3개 생성
이와 같이 함수를 선언하면 함수의 내용이 해석됩니다. (그러나 실행되지는 않습니다. 이 함수를 호출하기 전까지는 실행되지 않습니다.) 동시에 add라는 개체가 생성되었습니다.
방법 2: 명명되지 않은 함수 함수를 지정된 변수(var)에 할당 예 D2
var add=function(a, b)
{
return a b; >}
alert(add(1,2)); // 3개 생성
이 선언의 구문은 이상해 보이지만 더 잘 이해하는 데 도움이 됩니다. 사물". 이렇게 선언된 함수의 내용도 해석은 되지만 실행은 되지 않습니다.
동시에 다음과 같이 정의할 수도 있습니다.
D2A 예:
var add=function theAdd(a, b)
{
return a b
}
alert(theAdd(1,2) )); // 3개 생성
alert(add(1,2)); // 또한 3개 생성
위의 예에서 볼 수 있듯이 다음 중 하나를 통해 함수를 호출할 수 있습니다. 함수 이름 theAdd 또는 지정된 함수 add 변수 이름은 함수를 호출합니다.
D2B 예:
var myObject= new Object();
myObject.add=function(a,b){return a b};
// myObject에는 이제 "add"라는 속성/메서드가 있습니다.
// 아래와 같이 사용할 수 있습니다.
myObject.add(1, 2);
그리고 이 예는 객체의 속성으로 사용자 정의 함수를 사용해야 하는 경우를 보여줍니다. 일종의 함수 선언 방법은 매우 유용하며 OOP 아이디어에 더 가깝습니다.
방법 3: new 연산자를 사용하여 함수 선언
varName=new Function([param1Name, param2Name,...paramNName], functionBody)
예 D3:
var add=new Function("a", "b", "return a b;");
alert(add(3,4)); // 7개 생성
두 개의 매개변수 a와 b가 있으며, b를 반환합니다. 또한 new Function(...)은 여기에서 소문자 function 대신 대문자 Function을 사용한다는 점에 유의하세요. 이는 Function 개체를 만들고 싶다는 뜻입니다(new Object()가 Object 개체를 생성한다는 점을 기억하세요). 동시에 이전 매개변수 이름과 다음 함수 본문이 문자열 형식으로 전달되는 것을 볼 수 있습니다(참고: 모두 큰따옴표로 묶여 있습니다). 우리는 많은 매개변수를 가질 수 있으며, JavaScript는 함수 본문, 일반적으로 오른쪽 괄호에 가장 가까운 매개변수를 자동으로 식별합니다. 물론, 같은 줄에 모든 코드를 작성할 필요는 없습니다. 여러 줄로 작성하고 중간에 " " 또는 " "를 사용하여 연결할 수 있습니다. " " 및 ""는 JavaScript가 다음 줄에서 나머지 코드를 찾을 것임을 알려줍니다.
예제 D3A
var add=new Function("a", "b",
"alert" // " "를 사용하여 문자열을 자릅니다.
"('' a '와 ' b 추가); // ""를 사용하여 문자열을 분리합니다
return a b ;");
alert(add(3,4)); // 7을 생성합니다
물론 이렇게 함수를 선언하면 함수 본문이 해석되지 않습니다. (런타임이 해석될 때까지), 이로 인해 성능이 저하됩니다. 왜? 아래 예를 참조하세요.
D3B 예
코드 복사 코드는 다음과 같습니다
function createMyFunction(myOperator)
{
return new Function("a", "b", "return a" myOperator "b;")
}
var add =createMyFunction(" "); // "추가" 함수 생성
var subtract=createMyFunction("-"); // "뺄셈" 함수 생성
var Multiply=createMyFunction("*"); "곱하기" 함수
// 함수 테스트
alert("result of add=" add(10,2)) // 결과는 12입니다.
alert("result of substract=" subtract(10) ,2)); // 결과는 8입니다.
alert("곱셈의 결과="(10,2)) // 결과는 20입니다.
alert(add)
>
이 예제는 실행 중에 매개변수(myOperator)를 전달하여 세 가지 다른 Function 객체를 생성할 수 있다는 점이 더 흥미롭습니다. 그러면 인터프리터가 createMyFunction을 해석하려고 할 때 그 대가로 "연산자"가 무엇인지 명확하지 않고 이를 해석할 수 없으므로 자연스럽게 성능이 저하됩니다.
물론 사용자가 자신만의 맞춤 함수를 만들 수 있도록 하는 등 특별한 목적이 있는 경우에는 이 함수 선언 방법을 사용할 수 있지만, 이런 방식으로 사용하는 것은 피해야 합니다.