728x90 반응형 TIL149 호이스팅 관련 const, let, var 에러 정리 호이스팅 밑에 선언, 할당되어 있는 변수들을 앞에서 호출했을 때 선언된 변수만 가져오고 할당된 값은 못 가져오는 거임 호이스팅이 발생하면 선언된 변수는 undefined로 초기화되어 있기 때문에 undefined가 반환됩니다. var : 초기화 + 할당 같이함 그래서 초기화는 일단 되었으니 undefined 뜸 레퍼런스 에러 x let 및 const : 선언 / 초기화 분리되어서 일어남. 호이스팅에 의해 선언 부분만 끌어올려지고, 초기화는 선언이 이루어진 위치에서 발생함. 그래서 undefined도 못가져오고 레퍼런스 에러 남 1. 초기값 안 줬을 때 const const a; console.log(a) const 는 무조건 초기값과 함께 있어야 함 그래서 초기값 없다고 에러 뜨는 거임 SyntaxErr.. 2024. 2. 5. 팩토리 패턴 팩토리 패턴 const car1 = { name: "차1", price: "1000만원", getInfo: () => this.name+"의 가격은 "+this.price+" 입니다." } const car2 = { name: "차2", price: "2000만원", getInfo: () => this.name+"의 가격은 "+this.price+" 입니다." } 이렇게 생기는 객체들 반복 짱 많음 이걸 만드는 걸 함수화해서 공장을 만드는 거임 const factory = (param) => { return { name: param.name, price: param.price, getInfo: ()=> this.name+"의 가격은 "+this.price+" 입니다." } } const result1 =.. 2024. 2. 5. 얕은 복사 깊은 복사 다시보기 원시 타입 number, string 등등 참조 타입 arr, obj 원시 타입 값 할당하기 let a = 1; let b = 2; a = b; b = 3; console.log(a) //2 a, b 는 주소값을 가지고 있음 a = b 할 때 b가 가지고 있는 주소로 가서 값을 가져온 다음 샥 복사해서 이건 새로운 메모리 공간에 넣고 이 메모리 공간 주소를 a 에 할당하는 거임 그러니까 a와 b는 가지고 있는 메모리 주소가 다름 참조 타입 값 할당하기 let arr1 = [1,2] let arr2 = [3,4] arr1 = arr2 arr2.push(5) console.log('arr1',arr1) // [3,4,5] 배열은 참조 타입이기 때문에 arr1 자체가 arr2의 메모리 주소를 참조하게 만듦 그.. 2024. 1. 28. 자바스크립트 메모리 관리 // 호이스팅, 스코프 체이닝 1. 메모리 생명 주기 만들 때 메모리 할당함 할당된 변수나 함수를 읽거나 쓸 때 메모리를 사용함 메모리가 필요 없어지만 메모리에서 해제함 c는 메모리 할당 해제 프로그래머가 가넝함 (malloc() free()) 자바스크립트는 v8엔진이 알아서 해줌 2. 힙 // 스택 메모리 공간은 힙 / 스택 / 일반 영역임 원시값은 스택에 저장댐 고정된 메모리를 할당하게 됨 (정적 메모리 할당) => 주소값의 경우 스택에 저장되는 거임 => 실행 컨텍스트로 여기에 해당 참조값은 메모리 힙에 저장됨 힙은 동적 메모리 할당임 3. 가비지 컬렉션 자바스크립트 엔진이 메모리를 해제하는 방법 컴퓨터는 메모리가 필요한지 결정 못함 -> 자신을 참조하는 객체의 수를 세어서, 참조 카운트가 0이 되면 버림 가비지 컬렉션은 메인 .. 2024. 1. 28. static c# 같아서... 아마 맨처음 시작되는게 main 함수 같음 1. new Solution() 같이 앞에 new 가 할당되는 건 메모리 어디에 할당되는가? -> heap에 위치함 2. Solution.Foo1() 은 어떻게 호출 되는 가? -> 메모리 코드가 올라가야하는데 어떻게 호출댐? -> static 키워드는 따로 힙이 아니라 static 전용 메모리 공간이 있음 컴파일러는 static 붙은 키워드 함수, 변수, 클래스들을 프로그램 실행 동시에 메모리 공간에 싹 적재 시킴 이건 프로그래밍이 시작-> 끝날 때까지 절대로 지워지지 않음 그래서 호출 가넝함 메모리 적재는 프로그래머가 아니라 컴파일러가 직접 해주기 때문임 3. static 규칙 static 이 앞에 붙은 함수도 당연히 프로그래밍 시작하자마자.. 2024. 1. 28. 싱글톤 1. 하나의 객체 인스턴스만 존재함 2. 스테틱 함수로 객체 접근 class S { constructor() { if (S.instance) { return console.log('already instantiated'); } S.instance = this; this.version = Date.now(); this.config = 'test'; } static getInstance() { if (!this.instance) { this.instance = new S(); } return this.instance; } } const s1 = new S(); console.log(s1); const s2 = new S(); console.log(s2); s1 === s2 콘솔 찍어도 true 가 나옴 싱글.. 2024. 1. 28. 커링 const data = [ { type: "fruit", color: "red" }, { type: "vegetable", color: "green" }, { type: "fruit", color: "yellow" }, { type: "vegetable", color: "red" } ]; const filterByType = type => item => type === "" || item.type === type; const filterByColor = color => item => color === "" || item.color === color; const filterBySize = size => item => size === "" || item.size === size; const tripleFil.. 2023. 12. 26. dart4 - class2 getter setter void main() { // getter setter Idol rm = new Idol( name : "rm", group : 'bts' ); print(rm.name); print(rm._name); rm.name = "은지"; print(rm.name); } class Idol { // private variable (_name, _ 로 표기함) // 자바 같은 전통 oop들은 클래스 안에서만 // private 변수들을 가져올 수 있음 // 다트는 같은 파일에 작성이 되어야 // private을 가져올 수 있음$ String _name; String _group; Idol({ String name = "eunji", String group = "family" }) : th.. 2023. 12. 10. dart4 - class1 내가 아는 클래스 기본 문법 Idol Class 를 만들고 안에 name 변수를 만들었다고 했을 때 같은 괄호 내에서 변수를 사용하려면 this 를 사용해서 값을 불러옴 class를 사용할 땐 인스턴스화 해서 사용함 그리고 밑엔 응용편 void main() { Idol redVelvet = new Idol( '슬기', '레드벨벳' ); redVelvet.sayName(); } class Idol { // 변수 선언 String name; String group; // 인스턴스 생성시 인자를 받음 constructor Idol( String name, String group, ) : this.name = name, this.group = group; void sayName(){ print('제 이름은 ${.. 2023. 12. 10. 이전 1 2 3 4 5 6 7 8 ··· 17 다음 728x90 반응형