JavaScript
-
while (a-- > 0) : 감소 카운트 조건문JavaScript/입 속의 검은 잎 2022. 9. 24. 12:20
let data = "5 3" const n = data.split(" "); var a = Number(n[0]), b = Number(n[1]), stars = ''; while (a-- > 0) stars += '*'; while (b-- > 0) console.log(stars); while (v-->0) 마치 카운트 다운처럼 보이지만, 사실 증감연산자 ( -- ) 와 비교 연산자 ( > ) 합쳐놓은 것.
-
repeat()JavaScript/입 속의 검은 잎 2022. 9. 24. 12:10
별 찍기 문제. data에서 1000이하 정수 x와 y가 들어오고, x로 가로만큼 y로 세로만큼 찍어야. 1.반복문 let data = "5 3" const n = data.split(" "); const a = Number(n[0]), b = Number(n[1]); const row = '*'.repeat(a) for(let i =0; i < b; i++){ console.log(row) } 2.콘솔로그에서 해결 let data = "5 3" const n = data.split(" "); const a = Number(n[0]), b = Number(n[1]); console.log((('*').repeat(a)+`\n`).repeat(b)) let data = "5 3" const n = data..
-
실행 컨텍스트JavaScript 2022. 9. 23. 23:53
스코프, 호이스팅, this, 함수, 클로저 등 일련의 동작 원리. 실행 컨텍스트의 3가지 객체 : 변수객체, 스코프체인, this var x = 'xxx'; function foo () { var y = 'yyy'; function bar () { var z = 'zzz'; console.log(x + y + z); } bar(); } foo(); 1.Variable Object (VO / 변수객체) Variable Object는 아래의 정보를 담는 객체이다. 변수 매개변수(parameter)와 인수 정보(arguments) 함수 선언(함수 표현식은 제외) 그런데 변수객체는 전역인지 함수인지 그 맥락(context)에 따라, 실행 컨텍스트의 프로퍼티로서 가지는 값이 다르다. 2. Scope Chain ..
-
스코프JavaScript 2022. 9. 23. 23:22
함수 스코프는 지역 스코프의 가장 흔한 사례이다. var a = 1; // 전역 스코프 function print() { // 지역(함수) 스코프 var a = 111; console.log(a); } print(); // 콘솔에 111 출력 console.log(a); // 콘솔에 1 출력 var x = 'global'; function foo () { var x = 'function scope'; console.log(x); } foo(); // 함수 스코프로부터 function scope 출력 console.log(x); // 전역 스코프로부터 global 출력 스코프 체인 : 자신의 스코프에 사용하고자 하는 변수가 없으면 스코프 체인을 통해 변수를 찾는다. var a = 1; // 전역 스코프 f..
-
호이스팅 HoistingJavaScript 2022. 9. 23. 18:45
Hoist, 감아올리기. 코드가 실행되기 전에 var, let, const 등으로 정의된 변수나 함수선언문, 함수표현식이 끌어올려지는 것. 사실 이런 은유보다 실제로 무슨 일이 일어나는지 보면 훨씬 쉽다. 변수는 3단계에 걸쳐 생성된다. 자세한 내용은 실행 콘텍스트Execution Context을 참조하기 바란다. 1) 선언 단계(Declaration phase) 변수를 실행 컨텍스트의 변수 객체(Variable Object)에 등록한다. 이 변수 객체는 스코프가 참조하는 대상이 된다. 2) 초기화 단계(Initialization phase) 변수 객체(Variable Object)에 등록된 변수를 위한 공간을 메모리에 확보한다. 이 단계에서 변수는 undefined로 초기화된다. 3)할당 단계(Assi..
-
불변성에 대해2 : Nested Object, 방어적 복사, 불변객체생성JavaScript 2022. 9. 23. 18:03
1. 객체의 방어적 복사 : Object.assign Object.assign(target, ...sources) Object.assign은 타킷으로 후자의 프로퍼티를 복사한다. const o1 = {name:'kim'} const o2 = {name:'kim'} console.log(o1 === o2) // fasle 1번 김씨와 2번 김씨는 같지 않다. 값과 자료타입이 같아도, b)데이터 영역의 주소가 다르다. const o1 = {name:'kim'} const o2 = o1 o2.name = 'lee' console.log(o1, o2, o1.name, o2.name) // { name: 'lee' } { name: 'lee' } lee lee 그러나 변수 영역에서 재할당을 하고, b)데이터 영역..
-
불변성에 대해1 : 기본형 데이터와 참조형 데이터JavaScript 2022. 9. 23. 16:02
1.기본형 타입(Primitive Type) : 숫자( Number), 문자열(String), 불리언(Boolean), null, undefined, 심볼(symbol) 기본형 타입은 할당, 연산시 데이터가 복제된다. 편의상의 표현이지만, a)변수영역과 b)데이터 영역으로 메모리가 할당된다. a)변수 영역에는 식별자와 주소값이 담겨 있다. b)데이터 영역에는 데이터가 담겨 있다. 기본형 타입의 불변성은 a) 식별자 변수영역과 관련이 없다. b) 데이터 영역의 메모리가 변하지 않는다는 것이다. 문자열은 기본형 타입으로, 변경 불가능한 값(immutable value)이다. 다만, 변경 불가능하다는 뜻은 데이터 영역이 변하지 않는다는 것이다. 그러므로 재할당은 가능하다. var str = 'Hello'; s..