javaScritp 기능 (인생)
함수의 지식
javaScritp의 기능
// 함수 선언에서 정의 된 함수 fun1 (이름, 나이) { CONSOLE.LOG (이름 + ','+ 나이) } fun1 ( '에이미', 18이다); // 에이미 18은
// 함수 표현식 정의 VAR의 Fun2에 = 함수 (이름, 나이) { CONSOLE.LOG (이름 + ','+ ; 연령) } fun1 ( '에이미', 18이다); // 에이미, 18되고
와 자바 스크립트 함수 의 기본 매개 변수
/ * 默认参数* / 함수 fun1 (이름, 나이 = 17 ) { CONSOLE.LOG (이름 + ','+ 나이); } fun1 ( '에이미', 18); // 에이미, 18 fun1 ( '에이미', ''); // 에이미, fun1 ( '에이미'); // 에이미, 17 fun1 ( "에이미", 널 (null) ); // 에이미, 널 (null)
함수 매개 변수의 기본값은 일시적 데드 존은 기본 값이 다른 매개 변수가 될 수 없기 때문에 함수 매개 변수 기본값 식, 초기화 매개 변수 값이 할당되지 않은, 있습니다.
함수 Fun2에 (X, Y = 용 X) { CONSOLE.LOG (X, Y); } Fun2에 ( 1); // 1 함수 fun3 (X = Y ) { CONSOLE.LOG (X); } fun3 (); // 오류 ReferenceError : Y는 정의되지 않은
자바 스크립트 함수 가변 파라미터
// 불확실한 파라미터의 수를 나타내는 데 사용 매개 변수 함수 FUN4 ( ... 값) { CONSOLE.LOG (values.length를) } FUN4 ( 1, 2).; // 2 . FUN4 (1, 2, 3 ,. 4 ,. ) // 4
구조 정의 함수
기능 생성자 함수에 의해 만들어진, 그것은 인수의 수의 생성자에 전달하지만, 다른 매개 변수는 인수 함수로 전달되는 동안 마지막 매개 변수는, 몸의 함수로 전달됩니다 주목할 가치가있다 할 수있다. 이 두 번 코드를 구문 분석 구문 원인이됩니다 함수를 정의하는 데 사용되는 방법은, 들어오는 두 번째 생성자 문자열이 성능에 영향을 구문 분석 루틴 인 ECMAScript 코드를 파싱 처음 사용하지 않는 것이 좋습니다.
VAR의 FUNCTIONNAME = 새로운 함수 ( "가치", ..., "函数体");
VAR의 F2는 = 새로운 기능 ( "N1", "N2", "복귀 N2 + N1]" ); CONSOLE.LOG (F2 ( 1,2)); // 삼
참고 : 함수 값 유형을 포함하고, 함수 이름은 함수에 대한 포인터 때만 포인터 만 복사 다른 시간에 할당 된 변수 이름 함수명. null로 세트를 다음 즉, 단지 메모리 포인터를 제거, 그것은 함수 호출 B에 영향을주지 않습니다.
VAR의 A = B = 함수 (값) { 복귀 VALUE1; } = 널 ; B ( 1);
함수 인수 호출 된 기본 객체 배열과 같은,하지만 배열은, 객체는 매개 변수의 함수에 전달됩니다. 우리는이 기능을 사용할 수 있습니다 인수는 얼마나 많은 매개 변수를 알고
펑션 카운터 () { VAR의 합 = 0 ; 위한 ( VAR I = 0; I <가 에서 arguments.length를 , 난 ++ ) { 합계 + = 인자 [I]; } 리턴 합; } CONSOLE.LOG (카운터 ( 199,991,1,2,3,4,5)); // 1205 CONSOLE.LOG (계수 ()); // 0
참고 : 여기에 인수 암시 대상, 문이 또한 작동하지 않습니다, 내부 함수는 외부 함수의 콘텐츠에 액세스 할 수 있지만, 직접이 기능을 외부 객체 인수에 액세스 할 수 없습니다.
함수 F1 () { CONSOLE.LOG (에서 arguments.length); F2 = 함수 () { CONSOLE.LOG (에서 arguments.length); } 리턴 F2 단계; } VAR의 F = F1 (1,2,3); // 3 F (); // 0
함수 .call - 객체 메소드 호출은 다른 한 객체는 전류를 대체
/ * 생성자 * / 함수 학생 (이름, 나이) { 다음은이 .name을 = 이름; 은이 .age = 나이; } 표시 = 기능 (추가) { 을 console.log (추가 + ":"+ 은이 .name을 + "," + 다음은이 ; .age) } // 객체 톰 만드는 생성자 새로운 키워드를 호출하여 VAR = 로즈 새로운 학생 ( "로즈", 18 인 ); var에 잭 = 새로운 학생 ( "잭", 20이다 ); // 호출 표시 방법은, 문맥, 지정된 호출 개체를 지정,이 점은 "안녕하세요, 모두가 매개 변수"장미 쇼 .call (장미, "모두 안녕"); //안녕하세요 모두들 : 로즈, 18 표시 .call (잭의 "안녕하세요"); // 헬로 : 잭, 20
호출 메서드 매개 변수는 첫 번째 매개 변수는 경우, 방법, 또는이 시점 전화에 객체 대표, 생략 할 수 있습니다 당신이 가리 킵니다 창 개체를 지정하지 마십시오을 .
VAR 이름 = "이름"; var에 나이 = 18 ; // 전역 변수 //; show.call () 정의되지 않은 알 수없는, 18 :
즉시 실행 발현 함수 (인생)
블록 레벨 범위 및 기능 영역
함수 CALC () { 대 ( VAR I = 0; I <5; 내가 ++ ) { CONSOLE.LOG (I); // // 0,1,2,3,4 } CONSOLE.LOG (I); // 5 } CALC ();
기능 블록 레벨 범위 그래서 전 출력 백 (5)가 제공되지 않습니다
용액, 블록 레벨 범위 시뮬레이션
함수 CALC () { // 인생 ( 함수 () { 위해 ( VAR I = 0; I <5; 내가 ++ ) { CONSOLE.LOG (I) // 0,1,2,3,4 } }) () ; CONSOLE.LOG (I); // 报错 } CALC ();
함수 표현식 또는 익명 개체가 즉시 실행
// 익명 함수를 호출 ( 함수 {() (을 console.log을 "이 함수의 표현이다" ); }) (); // 익명 객체를 호출 ({ 이름 : "foo는" , 쇼 : 함수 () { 콘솔. (기록 은이 ; .name을) } }) 쇼 ().
CONSOLE.LOG을 ({A : 1. } II.A) CONSOLE.LOG ({A : 함수 ().} {A} ());
다양한 기능이 즉시 표현을 썼다
// 가장 일반적인 두 가지 쓰기 ( 함수 () { / * 코드 * / } ()); // 권장 문구가 ( 함수 () { / * 코드 * / }) (); // 물론,이있을 수 있습니다 / / 브래킷 JS 일부 운영자 (예컨대 = && || 등) 함수식 및 함수 선언을 명확화 할 수 // 다음 코드 파서 이미 알려진 표현이기 때문에 다른 것 표현의 기본 // 하지만 모두 받게됩니다 교환 var에 나는 = 함수 () { 반환 (10) ;} (); true로 && 기능 () { / * 코드 * / } (); 0, 기능 () {/ * 코드 * / } (); // 만약 당신이 두려워 코드 모호한, 단항 연산자를 선택할 수있다 읽기가 어렵습니다 ! 기능 () { / * 코드 * / } (); ~ 기능 () { / * 코드 * / } (); - 기능 () { / * 코드 * / } (); + 기능 () { / * 코드 * / } (); // 당신이 할 수 있도록 새로운 새로운 기능 () { / * 코드 * / } 새로운 새로운 기능 () { / * 부호 * /} () // 매개 변수
파라미터 즉시 발현 함수
( 함수 (N) { CONSOLE.LOG (N); // 100 }) (100);
식 바람직 함수 세미콜론 첨가 직전
VAR의 K = 100 ( 함수 (N-) { CONSOLE.LOG (N-)] }) (K); // 에러, 인터프리터 (100)는 그 함수
했다 K = 100 (; 함수 (N) { CONSOLE.LOG (N)] }) (K);
인생의 변형
( 기능 (N-) { 하며 CONSOLE.LOG는 (N-) // 이 코드 30000 생각 (} ) 100);
긴 코드의 중간, 100 만 수정 후 볼 수있는 문서의 끝이 매개 변수를 결과하는 경우 :
( 기능 (특급) { EXP ( 100 ); } ( 기능 (N-) { 을 console.log (N-); // 이 코드 30000을 생각 }));