함수는 이벤트에 의해 구동되거나 호출 될 때 실행되는 재사용 가능한 코드 블록입니다.
JScript는 두 가지 함수를 지원합니다. 하나는 언어 내의 함수 (예 : Eval ())이고 다른 하나는 자체적으로 생성됩니다.
JavaScript 함수 내부에서 선언 된 변수 (VAR 사용)는 로컬 변수이므로 함수 내부에서만 액세스 할 수 있습니다. (이 변수의 범위는 로컬입니다).
변수를 선언 한 함수 만 인식 할 수 있기 때문에 다른 기능에서 동일한 이름의 로컬 변수를 사용할 수 있습니다.
함수를 호출하는 방법
1. 일반 호출 : functionName (실제 매개 변수 ...)
2. 함수를 가리키는 변수를 통한 호출 :
var myvar = 함수 이름;
myvar (실제 매개 변수 ...);
함수를 반환합니다
1. 함수에 명시적인 반환 값이 없으면 반환 된 값은 "정의되지 않은"것입니다.
2. 함수에 리턴 값이 있으면 반환 값이 무엇이든 반환합니다.
반환 문을 사용하여 기능을 호출하는 장소로 반환 할 수 있습니다.
반환 문을 사용하면 함수는 실행을 중지하고 지정된 값을 반환합니다.
함수는 일반적으로 고유 한 값을 반환 하므로이 값은 또 다른 기능 일 수 있습니다.
코드 사본은 다음과 같습니다.
<script type = "text/javaScript">
var box = function () {
var a = 1;
return function () {
경고 (A ++)
}
}
alert (box ()); // "function () {alert (a ++)}"팝업
</스크립트>
여기서 우리는 단지 반환 값을 변수에 할당 한 다음 정상 함수를 사용하는 것처럼 호출 할 수 있습니다.
코드 사본은 다음과 같습니다.
<script type = "text/javaScript">
var box = function () {
var a = 1;
return function () {
경고 (++ a)
}
}
var newfunc = box ();
newfunc (); // 2
</스크립트>
반환 된 함수를 즉시 실행하려면 box () ()를 사용 하여이 코드를 실행할 수도 있습니다.
모든 ECMAScript 함수는 값으로 전달되므로 매개 변수는 참조로 전달되지 않습니다.
PS : 통과 회의가있는 경우 함수의 변수는 전역 변수이며 외부에서도 액세스 할 수도 있습니다.
(1) 값 유형 : 수치, 부울, 무효, 정의되지 않은.
(2) 참조 유형 : 객체, 배열, 함수.
참조 유형 값 : 힙 메모리에 저장된 객체를 나타냅니다. 이는 변수가 실제로 메모리의 다른 위치를 실행하는 포인터 일 뿐이며 해당 위치에 따라 객체가 저장됩니다.
익명 기능을 만듭니다
코드 사본은 다음과 같습니다.
기능(){
반환 '리'; // 단일 익명 함수를 실행할 수 없으며 실행할 수 있더라도 이름이 없어서 호출 할 수 없습니다.
}
jQuery에는이 익명 기능의 많은 사용법이 있습니다. 익명 기능을 직접 선언하고 즉시 사용하십시오. 익명 함수를 사용하는 장점은 한 번 사용되지 않는 함수를 정의하는 것을 피할 수 있으며의 이름 충돌 문제가 없다는 것입니다. JS에는 네임 스페이스 개념이 없으므로 기능 이름 충돌이 쉽습니다. 이름 지정 충돌이 이루어지면 마지막 선언 된 충돌이 우선합니다.
자기 실행에 의해 익명 기능 실행 :
코드 사본은 다음과 같습니다.
// 자기 실행을 통해 익명 함수를 실행합니다
<script type = "text/javaScript">
(function () {// (익명 함수) (); 첫 번째 괄호 안에 익명 함수를 넣고 두 번째 괄호 안에 실행하십시오.
경고 ( 'Lee');
}) ();
</스크립트>
익명 함수의 반환 값을 변수에 할당합니다.
코드 사본은 다음과 같습니다.
// 자체 실행 된 익명 함수의 반환 값을 변수에 할당
<script type = "text/javaScript">
var box = (function () {
경고 ( 'Lee');
}) (); // Popt "Lee";
경고 (상자); // 정의되지 않은 팝업. Alert (Box ())이 작성되면 "Lee"만 팝업됩니다.
</스크립트>
자체 실행에 대한 매개 변수 전달 익명 함수 :
코드 사본은 다음과 같습니다.
// 익명 함수의 매개 변수 전송을 자체 집행합니다
<script type = "text/javaScript">
(기능 (연령) {
경고 (연령);
}) (100); // 팝트 100
</스크립트>
JavaScript는 동적 함수를 만듭니다.
JavaScript는 동적 기능 생성을 지원합니다. 동적 함수는 함수 객체에 의해 정의되어야합니다 (함수는 JavaScript의 객체이며 고정되고 변하지 않습니다. 함수 객체의 "f"는 대문자를 대문자로 삼아야한다는 규정을 규정합니다. 함수 일 때는 기능을 정의 할 때 사용되는 키워드임을 알고 있습니다.
동적 함수 생성을위한 기본 형식 : var variable name = new 함수 ( "매개 변수 1", "매개 변수 2", "매개 변수 n", "실행 문");
다음 코드를보십시오.
코드 사본은 다음과 같습니다.
<script type = "text/javaScript">
var square = new 함수 ( "x", "y", "var sum; sum = x+y; return sum;");
경고의 결과 ( "Square (2,3)는 :"+square (2,3)); // 제곱 (2,3)의 결과는 : 5입니다
</스크립트>
정사각형은 동적으로 생성 된 기능입니다. 함수 객체 이후 괄호 안의 각 부분은 문자열 형태이어야합니다. 즉, 인용문 ( ""또는 '')으로 둘러싸여 있어야합니다.
이 코드 :
var square = new 함수 ( "x", "y", "var sum; sum = x+y; return sum;");
그리고 다음 코드 :
코드 사본은 다음과 같습니다.
기능 제곱 (x, y) {
var 합;
합 = x+y;
반환 합계;
}
하나는 동적 함수이고 다른 하나는 정적 함수라는 점을 제외하고는 정확히 동일합니다.
코드를 작은 코드로 나누는 이유는 무엇입니까? , 문자열을 여러 독립 문자열로 나누는 장점은 일부 문자열을 수정하여 언제든지 기능의 기능을 변경할 수 있다는 것입니다.
콜백 함수
콜백은 함수의 호출 프로세스입니다. 그런 다음이 호출 과정을 이해하는 것으로 시작하십시오. 함수 a는 매개 변수를 가지고 있으며, 이는 함수 b입니다. 기능 A가 실행되면 기능 B가 실행됩니다. 이 프로세스를 콜백이라고합니다.
실제로 중국어는 콜백, 콜백, 백 콜을 의미하는 것을 이해하기 쉽습니다. 기능 A를 완료 한 후 나중에 함수 B를 호출하십시오.
여기에서 명확해야합니다. 함수 B가 매개 변수 형태로 기능 A로 전달되므로 함수 B를 콜백 함수라고합니다.
jQuery의 대부분의 효과 기능에는 콜백 함수가 포함됩니다. jQuery 효과 기능
예를 들어:
코드 사본은 다음과 같습니다.
<script type = "text/javaScript">
$ ( "div"). show (1000, function () {
// 콜백 함수
});
</스크립트>
여기서 콜백 함수는 인스턴스로 대체 할 수 있습니다.
코드 사본은 다음과 같습니다.
<script type = "text/javaScript">
$ ( "div"). show (1000, function () {
Console.log ( "Hello World")
});
</스크립트>
콜백은 실제로 함수가 실행되면 현재 실행 된 기능은 소위 콜백 함수입니다. 어때? 이해하기 쉽습니다 ...
방법과 기능의 차이
코드 사본은 다음과 같습니다.
var arr = [1,2,3,4,5]
var a = 12; // 변수 : 무료
arr.a = 5; // 속성 : 객체에 속합니다
함수 show () // 함수 : 무료
{
경고 ( 'a');
}
arr.fn = function () // 메소드 : 객체에 속합니다
{
경고 ( 'b');
}
실제로, 메소드는 함수이지만 메소드는 그에 속하는 객체가 있습니다.
우리가 알고 있듯이, 이벤트를 클릭하기위한 결합 기능
문법:
$ (selector) .click (function)
매개 변수 설명
함수는 선택 사항입니다. 클릭 이벤트가 발생할 때 실행되는 기능을 지정합니다.
이 형태는 종종 jQuery에서 볼 수 있습니다. 메소드에 이벤트 핸들러를 추가하기 위해 기능을 매개 변수로 사용합니다.
JS 글로벌 기능
글로벌 기능은 내장 객체의 속성 또는 방법이있는 개념이 아닙니다. 글로벌 기능은 내장 된 객체에 속하지 않습니다.
JavaScript에는 일반적으로 사용되는 일부 기능을 완성하기위한 다음 7 가지 전역 기능이 포함되어 있습니다.
Escape (), Eval (), isfinite (), isnan (), parsefloat (),
parseint (), unescape ().
기능의 여러 기능
클래스 생성자로 사용하십시오
코드 사본은 다음과 같습니다.
function class () {}
class.prototype = {};
var item = new Class ();
폐쇄로 사용됩니다
코드 사본은 다음과 같습니다.
(기능(){
// 독립 범위
}) ();
생성자라고합니다
소위 생성자는이 기능을 통해 새로운 객체를 생성하는 것입니다.
코드 사본은 다음과 같습니다.
<script type = "text/javaScript">
기능 test () {
this.x = 10;
}
var obj = new test ();
경고 (obj.x); // 팝 10;
</스크립트>
새 연산자는 Object (), date () 및 function ()과 같은 사전 정의 된 생성자를 결합하여 개체를 작성하고 초기화하는 데 사용할 수 있습니다. 객체 지향 프로그래밍은 스크립트에 사용되는 사용자 정의 객체를 만들기 위해 사용자 정의 생성자를 정의하는 기능의 강력한 기능입니다. 정의 된 속성이있는 객체를 생성 할 수 있도록 사용자 정의 생성자가 생성됩니다. 아래는 사용자 정의 함수의 예입니다 (이 키워드 사용에 유의하십시오).
코드 사본은 다음과 같습니다.
함수 원 (XPoint, ypoint, Radius) {
this.x = xpoint; // x 원 중앙의 좌표.
this.y = ypoint; // 원의 중심의 y 좌표.
this.r = 반경; // 원의 반경.
}
원형 생성자를 호출 할 때 중심점의 값과 원의 반경이 주어집니다 (이 모든 요소는 고유 한 원형 물체를 완전히 정의하기 위해 필요합니다). 결국, 원 객체에는 세 가지 속성이 포함되어 있습니다. 원 객체를 설명하는 방법은 다음과 같습니다.
var acircle = new Circle (5, 11, 99);
생성자 함수를 사용하면 객체를 생성 할 때 일부 매개 변수를받을 수 있다는 것입니다.
코드 사본은 다음과 같습니다.
<script type = "text/javaScript">
기능 테스트 (이름) {
this.occupation = "코더";
this.name = 이름;
this.whoareyou = function () {
"I 'm" + this.name + "를 반환하고 나는" + this.cocupation;
}
}
var obj = new test ( 'trigkit4'); // 동일한 생성자를 사용하여 다른 개체 생성
var obj2 = new Test ( '학생');
obj.whoareyou (); // "난 트리거 4이고 코너"
obj2.whoareyou (); // "나는 학생이고 나는 코너"
</스크립트>
컨벤션에 의해, 우리는 생성자 함수의 첫 글자를 일반 함수와 크게 구별하기 위해 자본화해야합니다.
다음 두 가지 형태의 정의 함수는 동일합니다.
코드 사본은 다음과 같습니다.
<script type = "text/javaScript">
var test = function () {
경고 ( "Hello World");
}
alert (typeof (test)); // 출력 함수
</스크립트>
다음은 기능 엔티티에 초기 값을 할당하는 변수 테스트입니다.
코드 사본은 다음과 같습니다.
<script type = "text/javaScript">
기능 test () {
경고 ( "Hello World");
}
alert (typeof (test)); // 출력 함수
</스크립트>
다음과 같은 정의 함수 양식을 살펴보십시오.
코드 사본은 다음과 같습니다.
<script type = "text/javaScript">
기능 test () {
경고 ( "Hello World");
};
test (); // 실제로 출력을 출력하지 않습니까?
기능 test () {
경고 ( "Hello");
};
test (); // 만, hello는 출력입니다
</스크립트>
분명히, 첫 번째 기능은 작동하지 않았습니까? JavaScript 구문 분석 엔진은 코드를 라인별로 실행하지 않고 코드별로 실행한다는 것을 알고 있습니다. 동일한 프로그램의 분석 및 실행에서 정의 공식의 함수 명령문이 먼저 실행되므로 첫 번째 정의 된 코드 로직이 두 번째로 덮어 씁니다. 따라서 동일한 함수는 두 번만 실행됩니다.
값으로 기능합니다
함수는 구문 일뿐 만 아니라 JS의 값이기도합니다. 즉, 함수는 변수에 할당하고 객체의 속성 또는 배열의 요소에 저장되고 매개 변수로 다른 함수로 전달 될 수 있습니다.
함수의 이름은 실제로 보이지 않으며 변수의 이름 일뿐입니다.
코드 사본은 다음과 같습니다.
<script type = "text/javaScript">
기능 제곱 (x, y) {
x*y를 반환합니다.
}
var s = 정사각형; // s와 square는 동일한 함수를 나타냅니다
제곱 (2,3); // 6
S (2,4); // 8
</스크립트>
변수에 함수를 할당하는 것 외에도 객체의 속성에 함수를 할당 할 수도 있습니다. 함수를 객체의 속성으로 호출하면 함수를 메소드라고합니다.
코드 사본은 다음과 같습니다.
<script type = "text/javaScript">
var obj = {square : function (x, y) {// 객체는 직접 측정됩니다
x*y를 반환합니다.
}};
var ect = obj.square (2,3);
</스크립트>
프로토 타입 속성
각 함수에는 프로토 타입 속성이 포함되어 있으며 프로토 타입 객체라고하는 객체에 대한 참조를 가리 킵니다.
JavaScript Learning Notes (V) 프로토 타입 및 프로토 타입 체인을 참조하십시오
고급 기능
여기서 고차 기능은 고수도의 고차 기능이 아닙니다. 소위 고차 기능은 함수를 작동시키는 함수입니다. 하나 이상의 함수를 매개 변수로 수신하고 새 함수를 반환합니다.