본문 바로가기

전체 글107

JS문법종합반 정리 3주차 03 - 콜스택, 실행컨텍스트, VE, LE, 식별자정보, 외부환경정보, 호이스팅, 스코프, this, call(), apply(), bind() 콜 스택후입 선출의 보관 방식인 스택. 실행 컨텍스트를 보관하는 방식// ---- 1번 전역은 늘 먼저 스택var a = 1;function outer() { function inner() { console.log(a); //undefined var a = 3; } inner(); // ---- 3번 inner가 스택됨 console.log(a); // 1}outer(); // ---- 2번 outer가 스택됨console.log(a); // 1코드실행 → 전역(in) → 전역(중단) + outer(in) → outer(중단) + inner(in) → inner(out) + outer(재개) → outer(out) + 전역(재개) → 전역(out) → 코드종료실행 컨텍스트코드실행outer() 실행in.. 2024. 11. 7.
241106 TIL - 깊은복사이해하기, RegExp 깊은 복사 함수 이해하기/* 깊은 복사 함수 */let deepCopy_obj = function(key) { let result = {}; // 상위 객체의 프로퍼티가 참조형 데이터고 값이 비어있지 않으면 if (typeof key === 'object' && key !== null) { // 하위 객체의 프로퍼티에 접근해 복사하는데 만약 또 하하위객체가 있으면 재귀 실행 for (let lower_key in key) { result[lower_key] = deepCopy_obj(key[lower_key]); } } else { // 상위 객체의 프로퍼티가 기본형 데이터면 그냥 복사 result = key; } // 깊은 복사 완료된 객체 반환 return.. 2024. 11. 6.
JS문법종합반 정리 3주차 02 - 객체 복제, 얕은 복사, 깊은 복사 객체 복제의 문제점 객체를 변수에 직접 할당하는 식으로 통째로 복제하면, 복제된 객체의 프로퍼티를 변경할지라도 불변성 땜시 기존 객체와 복사 객체가 같다고 판단됨. /* 기존 객체 */var user = { name: 'wonjang', gender: 'male',};/* 객체를 복사하고, name 프로퍼티의 값을 바꾸는 함수 */var changeName = function (user, newName) { var newUser = user; newUser.name = newName; return newUser;};/* 복사 객체 생성 */var user2 = changeName(user, 'twojang');/* name의 값이 다름에도 불구하고 두 객체가 같다고 판단 */console.log(user.. 2024. 11. 6.
JS문법종합반 정리 3주차 01 - 메모리, 기본형 데이터, 참조형 데이터 데이터 타입 심화1. 데이터 타입의 큰 종류기본형 : Number, String, Boolean, null, undefined, Symbol 참조형 : Object (Array, Function, Date, RegExp, Map, Set)둘의 구분은 값의 저장방식과 불변성 여부로 함값의 저장방식 (= 복제 방식)기본형 : 값이 담긴 주소값을 바로 복제참조형 : 값이 담긴 주소값들의 묶음의 주소값을 복제불변성 여부기본형 : 불변성 O / 참조형 : 불변성 X 2. 메모리와 데이터에 대한 배경지식2-1) 메모리에는 비트와 바이트비트 : 컴퓨터가 이해할 수 있는 최소 단위 (0과 1의 작은 조각) 바이트 : 비트 8개 묶음, 비트를 일일이 찾기 부담돼서 생김 메모리는 바이트 단위로 구성 (64비트 정수를 저장.. 2024. 11. 6.
JS문법종합반 정리 2주차 - ES6문법, 일급객체로서 함수, Map, Set 구조 분해 할당 Destructuring배열이나 객체의 속성들을 분해해서 각각의 값을 변수에 할당할 수 있게 해줌/* 배열 분해 할당 */let arr = ["1", "2", "3"];let [a, b, c] = arr;console.log(a, b, c); // 반환 : "1" "2" "3"/* 객체 분해 할당 */let obj = { name : "Bob", age : 25 };let {name, age} = obj; console.log(name, age); // 반환 : "Bob" 25객체 분해 할당의 경우 변수명을 key 이름과 일치시켜야 하는데, 만약 변수 이름을 다르게 하고 싶다면 "key : 새이름"과 같이 설정해줄 수 있다/* 이름 바꿔 분해 할당 */let obj = { name : ".. 2024. 11. 5.
JS문법종합반 2주차 과제 // 배열을 정렬하는 메서드 sort(), 기본 설정이 오름차순임// 콜백함수에서 정렬 기준을 정할 수 이씀// 문자열 비교를 위해 localCompare()를 써야하나?// n번째 인덱스 요소가 같을 경우의 조건도 설정해줘야 할 듯? 아닌가 알아서 정렬하나?// 무튼 조건에 맞게 정렬한 strings를 answer에 넣어주면 끗function solution(strings, n) { var answer = []; let new_strings = strings.sort(function(a, b) { // 글자 비교를 한 값을 담을 변수 설정, 값은 글자가 다르면 1 또는 -1, 같으면 0 let compare = a[n].localeCompare(b[n]); .. 2024. 11. 5.