본문 바로가기
728x90
반응형

TIL147

자바스크립트 메모리 관리 // 호이스팅, 스코프 체이닝 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.
const test ()=>()=>{} 이거 하도 보이길래 chatGPT한테 물어봄 const createCounter = () => { let count = 0; // 클로저를 반환 return () => { count++; console.log(`현재 카운트: ${count}`); }; }; // createCounter 함수를 호출하여 클로저 생성 const counter = createCounter(); // 클로저를 이용하여 카운터 조작 counter(); // 출력: 현재 카운트: 1 counter(); // 출력: 현재 카운트: 2 counter(); // 출력: 현재 카운트: 3 이렇게 한다면 뭔가 state 아낄 수 있을 거 같음 ==== 이어서 퇴근 후 ==== 2023. 12. 7.
dart 3 <= enum, 타입 관련 이야기라 재밌음 enum 왜 씀? => 특정 값의 가능한 모든 값을 정의할 수 있음 (안전성, 코드 읽기가 쉬워짐) => enum 안에 있는 값만 사용 가능 => 고유한 타입을 갖기 때문에 (int, string 등등 아님 고유한 타입을 가짐, 타입 안정성) 함수 쓸 때 이렇게 씀 void main() { addNum(1, 2); } int? addNum(int a, int b){ print(a + b); return null; } return 안 써봤더니 경고창 뜸 js처럼 return; undefined 그냥 값이 없는 거 let x; console.log(x) 이런 경우임 값이 없으니 그냥 타입 자체가 undefined 임 명시적으로 값이 없을 때 null 을 씀. 그래서 타입 찍어보면 object 나옴 let y.. 2023. 11. 29.
dart 2 map // set js 객체랑 크게 다를 거 없어보임 값 업데이트 할 때도 키를 가져다가 씀 obj2['c'] = "car" 선언과 동시에 값 넣을 때 ///////////dart1 void main() { Map dictionary = new Map.from({ 'a' : 'appple', 'b' : 'banana' }); print(dictionary); } //////dart2 void main() { Map dictionary = { 'a': 'apple', 'b': 'banana', }; print(dictionary); } + new Map () 권장 x 'cherry'); print(dictionary); // {'a': 'apple', 'b': 'banana', 'c': 'cherry'}.. 2023. 11. 27.
728x90
반응형