sitelink1 | http://jinbroing.tistory.com/154 |
---|---|
sitelink2 | |
sitelink3 | |
sitelink4 | |
extra_vars4 | |
extra_vars5 | |
extra_vars6 |
var test = function(a, b, start){
if(start){
let result = a + b;
}
return result;
}
test(1, 2, true); // undefined
var name = 'jinbro';
{
var name = 'jinhyung park';
}
var test = function(){
var name = 'jinhyung';
console.log(name); // jinhyung
let age = 26;
let age = 26;
}
console.log(name); // jinhyung park
test();
console.log(a); // undefined
var a = 10;
console.log(b); // uncaught reference error 발생, b is not defined
let b = 20;
var outer = function(){
var time = 0;
return function(){
return time++;
}
}
var inner = outer();
inner(); // 0, innerVO - outer VO scope chain - time
inner(); // 1
inner(); // 2
inner(); // 3
var inner2 = outer();
inner2(); // 0
var arr = [];
for(var i=0; i<3; i++){
arr.push(function () { console.log(i) });
}
for(var j=0; j
var arr = [];
for(let i=0; i<3; i++){
arr.push( function () { console.log(i) } );
}
for(var j=0; j

- var로 전역변수 선언한다면 window 객체의 프로퍼티가 됨 : 변수가 함수에서 var로 선언되지않고
var isGlobal = true;
console.log(window.isGlobal); // true
- let으로 전역변수를 선언하면 window 객체 프로퍼티가 되지않음
let isGlobal = false;
console.log(window.isGlobal); // undefined
- 변수 선언 키워드
- 읽기 전용을 만듬
- let과 마찬가지로 블록 레벨 스코프를 가짐
- let과의 차이점이 있음
1) let은 값 재할당은 가능하지만, const는 재할당하지못함
let a = 10;
a = 20;
const b = 10;
b = 20; // Uncaught TypeError: Assignment to constant variable
2) const로 선언된 객체 : 객체 주소값이 변수에 바인딩되면 변수에 바인딩된 주소값을 바꿀 수 없음
const jinbro = {};
jinbro.name = 'jinbro';
jinbro = {}; // 새로운 객체 할당, 불가 Uncaught TypeError: Assignment to constant variable
- 값(값, 객체주소)을 재할당(변경)하는 것은 불가하나, 객체주소가 가리키는 객체의 프로퍼티 변경은 가능함
3) 바인딩되는 값을 변경하지않는 경우에는 우선적으로 const를 사용해라
- immutable object : Object.freeze
- MDN, let : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/let
- poiemaweb, block-level scope : http://poiemaweb.com/es6-block-scope
- MDN, const : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/const
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
11 | data library js 정의 및 사용 (exprt & import) | 황제낙엽 | 2023.02.16 | 48 |
10 | 객체 디스트럭처링 (Destructuring assignment) | 황제낙엽 | 2023.01.07 | 45 |
9 |
자바스크립트 ES6 모듈 내보내기/불러오기 (import/export)
![]() | 황제낙엽 | 2023.01.07 | 49 |
8 | for 구문을 while 처럼 조회 | 황제낙엽 | 2021.03.07 | 475 |
7 | [ES6] Rest parameters | 황제낙엽 | 2021.03.07 | 292 |
6 | [ES6] Default parameters | 황제낙엽 | 2021.03.07 | 67 |
5 | [ES6] “콜백 지옥 (callback hell)”을 제거하는 제너레이터(Generator) | 황제낙엽 | 2021.02.18 | 81 |
4 |
ES8(ECMA Script 8) - async, await
![]() | 황제낙엽 | 2020.08.26 | 133 |
3 | [ES6] ES 2015 (ES 6) 이후 추가된 기능들 정리 | 황제낙엽 | 2020.08.03 | 66 |
2 | 브라우저별 Javascript ECMA Script 지원 스펙 레퍼런스 링크 | 황제낙엽 | 2019.09.16 | 312 |
» |
[ES6] let, const 블록 레벨 스코프
![]() | 황제낙엽 | 2018.04.11 | 174 |