본문 바로가기

IT/Programming Language10

[Javascript] closure Lexical Environment 1. Environment Record : 모든 지역 변수를 저장하고 있는 객체 (일반적인 변수) 2. Outer Lexical Environment : 자신의 Scope을 제외한 외부의 변수를 저장하는 객체 Closure - 변수에 함수를 담아두어 Garbage Collection에 의해 함수의 지역 변수값이 사라지지 않도록 함 - 외부함수의 실행 종료로 외부함수의 지역 변수가 소멸했음에도 내부함수가 외부함수의 지역 변수에 접근이 가능 - JS의 함수는 [[Environment]]를 이용해 자신이 어디서 만들어졌는지를 기억함 function addUsingClosure() { var sum = 0; return function (number) { sum += numb.. 2022. 2. 20.
[Javascript] var -> let, const var 변수는 let, const보다 보안에 취약하고 side effect를 일으킴 따라서 let, const로 교체할 것을 권장함 var를 let, const로 교체하기 전 주의사항 1. var로 선언한 변수의 scope은 함수 scope이거나 전역 scope (Block Scope X) Block 외부에서 Block 내부의 var 변수에 접근 가능, let, const는 Block Scope for (var i = 0; i < 10; i++) { // ... } alert(i); // 10 2. 재선언이 가능 let, const는 재선언시 Error 발생 var user = "Pete"; var user = "John"; // this "var" does nothing (already declared.. 2022. 2. 19.
[Javascript] ... 활용 ... 1. 입력받을 매개변수의 개수를 모를 경우 (Rest Parameters) function sumAll(...args) { let sum = 0; for (let arg of args) sum += arg; return sum; } 2. Array나 Object의 원소들을 나열해야 하는 경우 (Spread Syntax) let arr1 = [1, -2, 3, 4]; let arr2 = [8, 3, -8, 1]; let merged = [0, ...arr1, 10, ...arr2]; alert(merged); // [0, 1, -2, 3, 4, 10, 8, 3, -8, 1]; alert( Math.max(1, ...arr1, 2, ...arr2, 25) ); // let str = "Hello"; .. 2022. 2. 19.