JS 튜토리얼

제이에스 홈 JS 소개 JS 어디로 JS 출력 JS 문 JS 구문 JS 코멘트 JS 변수 제이에스렛 JS 상수 JS 연산자 JS 산술 JS 할당 JS 데이터 유형 JS 함수 JS 객체 JS 이벤트 JS 문자열 JS 문자열 메서드 JS 문자열 검색 JS 문자열 템플릿 JS 번호 JS 숫자 메서드 JS 배열 JS 배열 메서드 JS 배열 정렬 JS 배열 반복 JS 배열 상수 JS 날짜 JS 날짜 형식 JS 날짜 가져오기 메서드 JS 날짜 설정 방법 JS 수학 JS 랜덤 JS 부울 JS 비교 JS 조건 JS 스위치 JS 루프 In에 대한 JS 루프 의 JS 루프 JS 루프 동안 JS 브레이크 JS 이터러블 JS 세트 JS 맵 JS 유형 JS 유형 변환 JS 비트와이즈 JS 정규 표현식 JS 오류 JS 범위 JS 호이스팅 JS 엄격 모드 JS 이 키워드 JS 화살표 함수 JS 클래스 JS JSON JS 디버깅 JS 스타일 가이드 JS 모범 사례 JS 실수 JS 성능 JS 예약어

JS 버전

JS 버전 JS 2009(ES5) JS 2015(ES6) JS 2016 JS 2017 JS 2018 JS IE / 엣지 JS 연혁

JS 객체

객체 정의 개체 속성 개체 메서드 개체 표시 개체 접근자 객체 생성자 개체 프로토타입 객체 반복 가능 객체 세트 객체 맵 개체 참조

JS 함수

기능 정의 기능 매개변수 함수 호출 함수 호출 기능 적용 함수 클로저

JS 클래스

수업 소개 클래스 상속 클래스 정적

JS 비동기

JS 콜백 JS 비동기 JS 약속 JS 비동기/대기

JS HTML DOM

DOM 소개 DOM 메서드 DOM 문서 DOM 요소 DOM HTML DOM 양식 DOM CSS DOM 애니메이션 DOM 이벤트 DOM 이벤트 리스너 DOM 탐색 DOM 노드 DOM 컬렉션 DOM 노드 목록

JS 브라우저 BOM

JS 창 JS 화면 JS 위치 JS 연혁 JS 네비게이터 JS 팝업 경고 JS 타이밍 JS 쿠키

JS 웹 API

웹 API 소개 웹 양식 API 웹 기록 API 웹 스토리지 API 웹 작업자 API 웹 가져오기 API 웹 지리적 위치 API

JS 아약스

AJAX 소개 AJAX XMLHttp AJAX 요청 AJAX 응답 AJAX XML 파일 AJAX PHP AJAX ASP AJAX 데이터베이스 AJAX 애플리케이션 AJAX 예제

JS JSON

JSON 소개 JSON 구문 JSON 대 XML JSON 데이터 유형 JSON 구문 분석 JSON 문자열화 JSON 객체 JSON 배열 JSON 서버 JSON PHP JSON HTML JSON JSONP

JS 대 jQuery

jQuery 선택기 제이쿼리 HTML 제이쿼리 CSS 제이쿼리 DOM

JS 그래픽

JS 그래픽 JS 캔버스 JS 플로틀리 JS 차트.js JS 구글 차트 JS D3.js

JS 예제

JS 예제 JS HTML DOM JS HTML 입력 JS HTML 객체 JS HTML 이벤트 JS 브라우저 JS 편집기 JS 연습 JS 퀴즈 JS 인증서

JS 참조

자바스크립트 객체 HTML DOM 객체


자바스크립트 하자

let키워드는 ES6 (2015) 에 도입되었습니다 .

로 정의된 변수 let는 재선언할 수 없습니다.

로 정의된 변수 let는 사용 전에 선언되어야 합니다.

로 정의된 변수 let에는 블록 범위가 있습니다.

재선언 불가

로 정의된 변수 는 다시 선언let 할 수 없습니다 .

실수로 변수를 다시 선언할 수 없습니다.

당신 과 함께 let할 수 없습니다:

예시

let x = "John Doe";

let x = 0;

// SyntaxError: 'x' has already been declared

당신 과 함께 var할 수 있습니다:

예시

var x = "John Doe";

var x = 0;

블록 범위

ES6(2015) 이전에는 JavaScript에 전역 범위함수 범위 만 있었습니다 .

ES6에는 두 가지 중요한 새 JavaScript 키워드인 let및 가 도입되었습니다 const.

이 두 키워드는 JavaScript에서 블록 범위 를 제공합니다.

{ } 블록 내부에 선언된 변수는 블록 외부에서 액세스할 수 없습니다.

예시

{
  let x = 2;
}
// x can NOT be used here

키워드 로 선언된 변수 var는 블록 범위를 가질 수 없습니다.

{ } 블록 내부에 선언된 변수는 블록 외부에서 액세스할 수 있습니다.

예시

{
  var x = 2;
}
// x CAN be used here

변수 재선언

키워드를 사용하여 변수를 다시 선언하면 var문제가 발생할 수 있습니다.

블록 내부의 변수를 다시 선언하면 블록 외부의 변수도 다시 선언됩니다.

예시

var x = 10;
// Here x is 10

{
var x = 2;
// Here x is 2
}

// Here x is 2

키워드를 사용하여 변수를 다시 선언하면 let이 문제를 해결할 수 있습니다.

블록 내부의 변수를 다시 선언해도 블록 외부의 변수는 다시 선언되지 않습니다.

예시

let x = 10;
// Here x is 10

{
let x = 2;
// Here x is 2
}

// Here x is 10

브라우저 지원

키워드 는 letInternet Explorer 11 또는 이전 버전에서 완전히 지원되지 않습니다.

다음 표는 let키워드를 완벽하게 지원하는 첫 번째 브라우저 버전을 정의합니다.

Chrome 49 Edge 12 Firefox 44 Safari 11 Opera 36
Mar, 2016 Jul, 2015 Jan, 2015 Sep, 2017 Mar, 2016


재선언

를 사용하여 JavaScript 변수를 다시 선언하는 var것은 프로그램의 모든 위치에서 허용됩니다.

예시

var x = 2;
// Now x is 2

var x = 3;
// Now x is 3

를 사용 let하여 동일한 블록에서 변수를 다시 선언하는 것은 허용되지 않습니다.

예시

var x = 2;    // Allowed
let x = 3;    // Not allowed

{
let x = 2;    // Allowed
let x = 3     // Not allowed
}

{
let x = 2;    // Allowed
var x = 3     // Not allowed
}

다른 블록에서 로 변수를 다시 선언하면 letIS가 허용됩니다.

예시

let x = 2;    // Allowed

{
let x = 3;    // Allowed
}

{
let x = 4;    // Allowed
}

게양하자

로 정의된 변수 var는 맨 위로 올라가며 언제든지 초기화할 수 있습니다.

의미: 변수를 선언하기 전에 사용할 수 있습니다.

예시

괜찮습니다.

carName = "Volvo";
var carName;

호이스팅에 대해 더 알고 싶다면 JavaScript 호이스팅 장을 공부하십시오 .

로 정의된 변수 let도 블록의 맨 위로 호이스팅되지만 초기화되지는 않습니다.

의미: let변수를 선언하기 전에 사용하면 다음과 같이 됩니다 ReferenceError.

예시

carName = "Saab";
let carName = "Volvo";