ES6 의 소개 와 let 의 사용|-ES6 연재 1
많은 사람들 이 3~5 년 전 엔 지 니 어 를 일 해도 곤 혹 스 러 웠 다.ECMAScript 는 무엇 일 까?그것 은 자 바스 크 립 트 와 무슨 관계 가 있 습 니까?
:JavaScript 3 , :ECMAScript,BOM (?)。
제목 에서 알 수 있 듯 이 ECMAScript 는 JavaScript 의 구성 부분 이다.
ECMAScript 는 JavaScript 의 문법 규범 입 니 다!ECMAScript 는 국제 표준 화 된 언어 로 모든 브 라 우 저 개발 업 체 가 정 한 표준 에 따라 브 라 우 저 를 개발 해 야 한다.개발 자 도 마찬가지 로 규정 에 따라 코드 를 프로 그래 밍 합 니 다.
ECMAScript 의 역할
문법 – 해석 규칙,키워드,문구,성명,조작 등유형 – 불 형,숫자,문자열,대상 등원형 과 계승
내 장 된 대상 과 함수 의 표준 라 이브 러 리 – JSON,숫자(Math),배열 방법,대상 내성 방법 등..
ECMAScript 를 알 고 나 면 ES6 가 무엇 일 까요?
ES6 ECMAScript 6 , 。 , ECMAScript 6 , , 。
ECMAScript 의 역사
1996 년 11 월 넷 스 케 이 프 는 자 바스 크 립 트 를 국제 표준화 기구 ECMA 에 제출 하기 로 했다.이듬해 ECMA 는 ECMAScript 를 발표 했다.이 버 전이 바로 ECMAScript 1.0 버 전이 다
1998 년 6 월 에 ECMAScript 2.0 버 전이 발표 되 었 습 니 다
1999 년 12 월 에 ECMAScript 3.0 버 전이 발표 되 어 자 바스 크 립 트 의 통행 기준 이 되 어 광범 위 한 지 지 를 받 았 다
2015 년 6 월 에 ECMAScript 6 가 정식으로 통과 되 어 국제 표준 이 되 었 다
ES6 가 왜 인기 가 많아 요?
4.567917.그렇습니다.많은 개발 자 들 에 게 ES6 가 가 져 온 새로운 기능 은 범위 가 넓 고 편리 한 기능 도 많 습 니 다.(예 를 들 어 화살표 의 기능 과 간단 한 문자열 삽입 값,모 르 겠 습 니 다.괜 찮 습 니 다.나중에 계속 소개 합 니 다)정말 흥 분 됩 니 다
let 의 용도
4.567917.우 리 는 평소에 코드 를 쓸 때 var 로 변 수 를 설명 합 니 다.그 밖 에 다른 키 워드 를 사용 하지 않 은 것 같 습 니 다.문자열 형식,배열 유형,디지털 형식 등 을 설명 하 든 하나의 var 로 점 을 만 드 는 것 이 편리 합 니 다.그러나 지금 ES6 는 var 를 제외 하고 let 로 변 수 를 설명 해 보 는 것 도 좋 습 니 다
4.567917.어,이렇게 말 하면 let 키 워드 는 성명 변 수 를 사 용 했 습 니까?예,let 의 용 도 는 변 수 를 설명 하 는 데 사 용 됩 니 다
4.567917.멀쩡 하 게 var 로 성명 하면 되 는데 왜 새로운 let 키워드 로 성명 합 니까?혹시 var 로 부족 한 점 이 있 나 요?네,정말 있어 요
var 의 부족 한 점 1
var arr = [ ];
for(var i=0; i<10; i++){
arr [i] = function(){
alert(i)
}
}
arr [8](); // :10
4
var arr = [ ];
for(let i=0; i<10; i++){
arr[i] = function(){
alert(i)
}
}
arr[8](); // :8
4.567917.let 성명 의 변 수 는 자신의 블록 급 역할 영역 에서 만 작용 하기 때문에 이 블록 급 역할 영역 이 나 오 면 역할 을 하지 않 습 니 다.예 를 들 어 샤 오 밍 이 국내 에서 시험 을 본'고급 프로그래머'증 이 외국 에 가서 지원 하면 다른 사람들 이 너의 졸업장 을 인정 하지 않 고 샤 오 밍 은 국내 에서 자격증 을 가지 고 일 할 수 밖 에 없다.let 성명 의 변수 도 마찬가지 로 자신의 블록 급 역할 영역 을 낼 수 없습니다
그렇다면 블록 급 작용 역 이 무엇 인지,어떻게 블록 급 작용 역 이 라 고 할 수 있 습 니까?
( :{ }) , let , 。
4.567917.코드 에서 for 순환 은{}을 포함 합 니 다.즉,블록 급 역할 도 메 인 을 포함 하고 모든 변수 i 는 자신의 역할 도 메 인 에서 만 작용 합 니 다.예 를 들 어 10 번 째 순환 중의 i 의 값 은 9 번 째 순환 에 영향 을 주지 않 습 니 다
4.567917.var 로 설명 하 는 변 수 는 이런 상황 이 아니다.i 의 값 은 각 블록 안의 i 에 영향 을 줄 수 있다.순환 이 끝 난 후에 i 는 10 이 고 모든 블록 의 i 는 10 이 된다.이것 이 바로 첫 번 째 코드 가 실 행 된 후에 숫자 10 이 나 오 는 이유 입 니 다.이것 은 우리 가 원 하 는 것 이 아 닙 니 다
4.567917.샤 오 밍 이 10 개국 에 계속 놀 러 간 것 과 같다.한 나라 에 갈 때마다 자신 에 게 다른 신분 을 만들어 주 었 다.그러나 샤 오 밍 은 앞으로 10 개국 에서 얻 은 그 신분 만 사용 할 수 있다 는 통 보 를 받 았 다.그러면 9 개국 에서 샤 오 밍 을 알 게 된 친구 들 은 그 를 알 지 못 했 고 샤 오 밍 은 그 자리 에서 멍 해 졌 다
var 의 부족 한 점 2
var a = 1;
function show(){
alert(a);
var a = 2;
}
show();// :undefined
4.567917.이 유 는 우리 가 코드 블록(함수 내)에서 하나의 변 수 를 설명 하고 정의 하여 변 수 를 향상 시 켰 기 때 문 입 니 다.실제 코드 집행 순 서 는 이 렇 습 니 다.자세히 보면 변수 가 향상 되 었 는 지 알 수 있 습 니 다
var a = 1;
function show(){
var a;
alert(a);
var a = 2;
}
show();// :undefined
4.567917.let 로 아까 그 코드 를 다시 쓰 면
var a = 1;
function show(){
alert(a);
let a = 2;
}
show();// : a is not defined
let 키워드 로 a 정의 하기;이렇게 하면 a 는 코드 블록 안에서 향상 되 지 않 을 것 이다.
그런데 왜 또 잘못 보 고 했 습 니까?let 로 성명 한 변 수 는 블록 급 역할 영역 에서 폐쇄 적 이 고 외부 전역 변수 a 의 영향 을 받 지 않 으 며 먼저 성명 하고 사용 해 야 하기 때문에 a 의 값 은 1(외부 영향 을 받 지 않 기 때 문)도 아니 고 undefined(먼저 성명 한 후에 사용 하기 때 문)도 아니 며 2 도 아니 고 정의 없 이 사용 하고 잘못 보 고 했 습 니 다.
4.567917.let 키 워드 를 사용 하 는 것 도 우리 에 게 평소에 정 의 를 먼저 밝 히 고 사용 하 는 좋 은 습관 을 일 깨 워 주 는 것 이다
let 사용 주의 점
주의 1:같은 블록 급 역할 영역 에 서 는 같은 변 수 를 반복 적 으로 설명 할 수 없습니다.
{
var a =1;
let a =2; // , a var
}
{
let a =1;
let a= 2; // ,a let 。
}
주의 2:함수 내 에서 let 로 함수 의 인 자 를 다시 설명 할 수 없습니다.
function say(word){
let word = 'hello Jack'; // : let word
alert(word)
}
say('hello Lili');
총결산
let 성명 변 수 는 블록 급 작용 역 에서 만 작용 하고 for 순환 에서 사용 하기에 적합 하 며 변수 향상 현상 도 나타 나 지 않 습 니 다.같은 코드 블록 에 서 는 같은 변 수 를 반복 할 수 없고 함수 에 있 는 인 자 를 중복 할 수 없습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.