데이터 유형
JavaScript는 약한 언어이지만 유형이없는 것은 아닙니다. JavaScript는 다음 7 가지 유형의 값을 인식 할 수 있습니다.
기본 데이터 유형
1.Boolean
2. 번호
3. 스트링
4. 널
5. 정의되었습니다
6. Symbol
물체
1. 어레이
2. 레지 즈프
3. 데이트
4. 마스
5 ....
typeof를 사용하여 데이터 유형을 결정할 수 있습니다. 연산자가 문자열을 반환하지만 반환 된 모든 결과가 기대치와 일치하는 것은 아닙니다.
false의 typeof // "boolean"typeof .2 // "number"typeof nan // "number"typeof '// "string"typesof undefined // "undefined"type "type"type "new date () //"object "type"type "type"type "객체"객체 "type"type "
변하기 쉬운
응용 프로그램에서 변수를 사용하여 값을 지정하십시오. 변수의 이름을 식별자라고합니다
성명
1. 키워드 var : 함수 범위를 사용하십시오
2. 키워드 사용 : 블록 범위 로컬 변수
3. 직접 사용 : 글로벌 범위
var global_var = 1; function fn () {var fn_var = 2; if (fn_var> 10) {let block_var = 3; global_var2 = 4;}}할당 만 선언하지 않으면 변수의 기본값이 정의되지 않았습니다.
Const 키워드는 불변의 변수를 선언 할 수 있으며 블록 스코프가 있습니다. 불변의 대상에 대한 이해에는주의가 필요합니다
const num = 1; const obj = {prop : 'value'}; num = 2; // uncughak typeerror : constant variable.obj [ 'prop'] = 'value2'; obj = []; // uppathtyerror : 상수 변수에 대한 할당.가변 향상
JavaScript는 다른 개념을 던지지 않고 나중에 선언 된 변수를 참조 할 수 있습니다. 이 개념은 변수 선언 프로모션 (호이 스팅)이라고합니다.
Console.log (a); // undefinedVar a = 2;
동등합니다
var a; console.log (a); a = 2;
기능
함수는 외부 코드로 호출 할 수있는 서브 루틴입니다 (또는 함수 자체에서 재귀 적으로 호출).
함수를 정의하십시오
1. 기능 선언
2. 기능 표현
3. 기능 생성자
4. 화살표 기능
함수 fn () {} var fn = function () {} var fn = new 함수 (arg1, arg2, ... argn, funcbody) var fn = (param) => {}논쟁
1. 경고 : 현재 실행 함수로 전달 된 매개 변수를 포함하는 배열 모양의 객체
2. arguments.length : 함수에 전달 된 매개 변수 수
3. arguments.caller : 현재 함수를 실행하는 함수를 호출하십시오
4. arguments.callee : 현재 실행중인 함수
함수 foo () {반환 인수;} foo (1, 2, 3); // 인수 [3] // { "0": 1, "1": 2, "2": 3}나머지
함수 foo (... args) {return args;} foo (1, 2, 3); // 배열 [3] // [1, 2, 3] 함수 fn (a, b, ... args) {return args;} fn (1, 2, 3, 4, 5); // 배열 [3] // [3, 4, 5]기본
함수의 매개 변수를 정의 할 때 기본값이 합의 될 수 있습니다.
함수 fn (a = 2, b = 3) {return a + b;} fn (2, 3); // 5fn (2); // 5fn (); // 5물체
JavaScript의 객체는 가변 키 컬렉션입니다
객체를 정의하십시오
1. 문자
2. 생성자
var obj = {prop : 'value', fn : function () {}}; var date = new Date ();건설자
생성자와 정상 함수 사이에는 차이가 없습니다. 새 키워드로 호출하는 것은 생성자입니다. 생성자를 사용하면 객체를 인스턴스화 할 수 있습니다.
함수의 두 가지 가능한 반환이 있습니다
1. 반품 후 표현의 평가를 반환하기 위해 명시 적으로 반환을 호출합니다.
2. 반환이 호출되지 않고 정의되지 않은 반품이 없습니다
기능인 (이름, 연령) {this.name = 이름; this.age = age;} var people = 새로운 사람 ( 'byron', 26);생성자는 값을 반환합니다
1. 반환 값 없음
2. 간단한 데이터 유형
3. 객체 유형
생성자는 처음 두 경우에 생성자의 인스턴스를 반환합니다. 이 기능은 객체를 인스턴스화하여 사용됩니다.
세 번째 생성자는 일반 함수와 동일하게 수행하고 반환 후 표현식의 결과를 반환합니다.
원기
1. 각 함수에는 프로토 타입의 객체 속성이 있으며 객체에 생성자 속성이 있으며, 이는 기본적으로 기능 자체를 가리 킵니다.
2. 각 객체에는 __proto__ 속성이 있으며 Zodiac은 부모 유형의 프로토 타입을 가리 킵니다.
함수 Person (name) {this.name = name;} person.prototype.print = function () {console.log (this.name);}; var p1 = new Person ( 'Byron'); var p2 = new Person ( 'Casper'); p1.print (); p2.praint ();이것과 범위
범위는 대중적인 방식으로 이해 될 수 있습니다
1. 나는 누구입니까
2. 어떤 종류의 기병이 있습니까?
나는 이것에 대답했다
기병은 내 지역 변수입니다
이 장면
정상적인 기능
1. 엄격한 모드 : 정의되지 않은
2. 비 스트릭 모드 : 글로벌 객체
3. 노드 : 글로벌
4. 브라우저 : 창
생성자 : 객체의 인스턴스
객체 방법 : 물체 자체
전화 및 신청
1.fn.call (Context, Arg1, Arg2,…, argn)
2.fn.apply (컨텍스트, args)
함수 isnumber (obj) {return object.prototype.tostring.call (obj) === '[개체 번호]';}function.prototype.bind
BAND는 새 함수를 반환하고 함수의 범위는 바인드 매개 변수입니다.
함수 fn () {this.i = 0; setInterval (function () {console.log (this.i ++);}. bind (this), 500)} fn (); () => {}Arrow 함수는 ES6에서 제공하는 새로운 기능이며 어휘 범위 와이 값으로 약식 기능 표현입니다.
함수 fn () {this.i = 0; setInterval (() => {console.log (this.i ++);}, 500)} fn ();상속
JavaScript 시나리오에서 상속은 두 가지 목표를 가지고 있으며 서브 클래스는 부모 클래스를 가져와야합니다.
1. 객체 속성
2. 객체 방법
함수는 (child, parent) {var _proptotype = object.create (parent.prototyp); _ proptotype.constructor = child.prototype.constructor; child.prototyp = _proptotype;} forting people (name, age.name = name; this.age = age; 영어 (이름, 연령, 언어) {people.call (this, name, age); this.language = language;} 상속 (영어, 사람); 영어.prototype.introction = function () {console.log ( 'hi, i am' + this.getname ()); console.log ( 'i speak' + this.language ( '); Age); this.language = language;} 상속 (중국어, 사람); 중국어 .Prototype.introction = function () {console.log ( 'hello, i am' + this.getName ()); console.log ( ' + this.lange.language); '중국어'); en.introcict (); cn.introcict ();ES6 클래스 및 상속
"Strict"; Class People {생성자 (이름, 나이) {this.name = name; this.age = age;} getName () {return this.name;}} 클래스 영어는 사람을 확장합니다 {생성자 (이름, 연령, 언어) {super (이름, 연령); this.getName ()); console.log ( 'I Speak' + this.language);}} let en = new English ( 'Byron', 26, 'English');문법
레이블 진술
고리:
for (var i = 0; i <10; i ++) {for (var j = 0;진술과 표현
var x = {a : 1}; {a : 1} {a : 1, b : 2}기능을 즉시 실행하십시오
(function () {} ()); (function () {}) (); [function () {} ()]; ~ function () {} ();! function () {} ();+ function () {} ();- function () {} (); delete function () {} (); function () {} (); void function () {} (); new function ()} (); new function () {} (); var f = in} (); 1,) (); function () {} (); 1> function () {} ();고급 기능
고차 함수는 함수를 매개 변수로 취급하거나 값을 함수로 처리하는 함수입니다.
콜백 함수
[1, 2, 3, 4] .foreach (function (item) {console.log (항목);});폐쇄
폐쇄는 두 부분으로 구성됩니다
1. 함수
2. 환경 : 기능 생성시 범위 내의 로컬 변수
함수 makecounter (init) {var init = init || 0; return function () {return ++ init;}} var counter = makecounter (10); console.log (coun일반적인 오류
for (var i = 0; i <doms.length; i ++) {doms.eq (i) .on ( 'click', function (ev) {console.log (i);});} for (var i = 0; i <doms.length; i ++) {(함수 (i) {doms.eq (i) .on (click ', function (ev). {console.log (i);});} (i);}게으른 기능
함수 eventBinderGenerator () {if (wind EventBinderGenerator ();카레
부분 매개 변수를 사용하여 함수를 생성하는 방법
함수 istype (type) {return function (obj) {return object.prototype.tostring.call (obj) === '[Object' + type + '];}} var isnumber = istype ('number '); console.log (isnumber (1)); console.log ('s '); istype ( 'array'); console.log (isarray (1)); console.log (isarray ([1, 2, 3])); 함수 f (n) {return n * n;} 함수 g (n) {return n * 2;} console.log (f (g (5))); 함수 파이프 (f, g) {return function () {return f.call (null, arguments);}} var fn = 파이프 (f, g);꼬리 재귀
1. 꼬리 호출은 함수의 마지막 단계는 다른 함수를 호출하는 것임을 의미합니다.
2. 재귀라고하는 함수 자체가 호출됩니다
3. 꼬리가 스스로 호출되면 꼬리 재귀라고합니다.
재귀는 "스택 오버 플로우"오류가 발생하기 쉽다 (스택 오버플로)
함수 계승 (n) {if (n === 1) 반환 1; return n * factorial (n -1);} factorial (5) // 120그러나 꼬리 재귀의 경우, 호출 레코드가 하나만 있기 때문에 "스택 오버플로"오류는 발생하지 않습니다.
기능 FACTORENT (N, TOTAL) {IF (N === 1) RETURN TOTAL; RETURN FATTORENT (N -1, N * TOTAL);} FACTORENT (5, 1) // 120카레는 매개 변수를 줄입니다
기능 카레 링 (fn, n) {return function (m) {return fn.call (this, m, n);};} 함수 tailfactorial (n, total) {if (n === 1) return total; return tailfactorial (n -1, n * 총);항-커리 화
function.prototype.uncurry = function () {return this.call.bind (this);};푸시 일반화
var push = array.prototype.push.uncurry (); var arr = []; push (arr, 1); push (arr, 2); push (arr, 3); console.log (arr);
위의 내용은 편집자가 소개 한 JavaScript 언어 (컴파일)의 절묘한 클래식 예제에 대한 전체 설명입니다. 나는 그것이 모두에게 도움이되기를 바랍니다!