전체 글
-
TIL-2024.02.23 - JS - 실행 컨텍스트-2. 실행 컨텍스트 스택과 렉시컬 환경> 기초/Javascript 2024. 2. 23. 22:28
------- 실행 컨텍스트 스택 ? 설명: 코드의 실행 순서를 스택구조(LIFO)로 관리 실행에 따라 실행 컨텍스트가 추가되고 제거된다. 예제: const x = 1; function foo() { const y =2; function bar(){ const z = 3; console.log(x + y + z) } bar(); } foo(); // 6 전역 코드의 평가와 실행: - 전역 코드를 평가해 전역 실행 컨텍스트를 생성하고 실행 컨텍스트 스택에 푸시 - 전역 변수 X 와 전역 함수 foo가 전역 실행 컨텍스트에 등록 - 이후 전역 코드가 실행되기 시작하여, 전역 변수 X에 값이 할당되고 전역 함수 foo가 호출 foo 함수 코드의 평가와 실행 - 전역 함수 foo가 호출되면 전역 코드의 실행은 ..
-
TIL-2024.02.22 - 알고리즘 - 보물지도과 비트 연산> 기초/알고리즘 2024. 2. 22. 21:54
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/17681 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 1차 코드 const solution = (n, arr1, arr2) => { const toStringTwo = (n, arr) => { const returnArr = []; for (let i = 0; i < arr.length; i++) { const tempArrLength = arr[i].toString(2).length; const tempString = tempArrLe..
-
TIL-2024.02.21 - JS - 실행 컨텍스트-1> 기초/Javascript 2024. 2. 21. 21:06
------- 실행 컨텍스트: 정의: 실행 컨텍스트는 소스코드를 실행하는 필요한 환경을 제공하고 코드의 실행 결과를 실제로 관리하는 영역 식별자를 등록하고 관리하는 스코프와 코드 실행 순서 관리를 구현한 내부 메커니즘으로, 모든 코드는 이를 통해 실행되고 관리 식별자와 스코프는 실행 컨텍스트의 렉시컬 환경으로 관리 && 코드 실행 순서는 실행 컨텍스트 스택으로 관리 유형: 전역 실행 컨텍스트(Global Execution Context): 코드가 처음 실행될 때 생성되는 실행 컨텍스트입니다. 전역 스코프와 전역 변수, 전역 함수를 관리합니다. 함수 실행 컨텍스트(Function Execution Context): 함수가 호출될 때마다 생성됩니다. 각 함수 호출에 대해 고유의 실행 컨텍스트가 생성되며, 해..
-
TIL-2024.02.20 - JS - 스코프> 기초/Javascript 2024. 2. 20. 22:48
------- 스코프 (범위) ? 모든 식별자는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정 > 식별자가 유효한 범위 var x = 'a'; function foo(){ var x = 'b'; console.log(1, x); // 1, a } foo(); console.log(2, x); // 2, a 예제와 같이 다른 영역에서 각기 변수 x 를 선언&참조한 경우 , JS 엔진은 같은 이름을 가진 변수중 어떤 것을 참조할 지 결정하는 것을 식별자 결정 (Identifer Resolution) 예제와 같이, [어떤 것을 참조할 지 결정하는 것] > 코드의 문맥은 실행되는 코드의 환경이나 상태, 즉 코드 문맥 (Context)을 고려 > 관련해서는 추후 진행 --..
-
TIL-2024.02.19 - JS - 변수 - 2. 호이스팅 관점에서 본 var, let, const> 기초/Javascript 2024. 2. 19. 16:16
------- var 특징: 변수의 중복 선언 허용 : var 키워드로 선언한 변수는 중복선언 가능 함수레벨 스코프: var 키워드로 선언한 변수는 함수의 코드 블록만을 지역 스코프로 인정함으로, 함수 외부에서 선언된 var 변수는 코드 블록 내에서 선언해도 모두 전역 변수로 작용 var x = 1; if(true){ // x는 전역변수. 이미 선언된 전역 변수 x가 있으므로 x 변수는 중복 선언 됨 // 이때, 의도치 않게 전역 변수값이 1 > 10으로 변경되는 side-effect 발생 var x = 10; } console.log(x) // 10 var 변수의 호이스팅: 변수 호이스팅에 의해 var 변수는 선언문 이전에 참조가능하지만, undefined 노출 // 이 시점에 변수 호이스팅에 의해 이..
-
TIL-2024.02.18 - JS - 변수 - 1. 변수 원리> 기초/Javascript 2024. 2. 18. 21:08
------- 변수? 의미: 변수란 하나의 값을 저장하기 위해 확보한 메모리 공간을 식별하기 위해 붙인 이름. > 하나의 값을 저장하기 위해 확보한 메모리 공간 ?? 프로그래밍 언어는 기억하고 싶은 값을 메모리에 저장 (아래의 사진같이) 저장된 값을 사용하기 위해 변수라는 메카니즘을 통해 불러옴 선언(declaration), 초기화 (Initialization), 할당 (assignment), 참조 (reference) 선언: 값을 저장하기 위한 메모리 공간을 확보(allocate)하고 변수 이름과 확보된 메모리 공간의 주소를 연결 (name binding)해서 값을 저장할 수 있게 준비 > 변수를 생성 초기화: 주로 선언과 초기화가 같이 발생하는데, 변수 선언에 의해 확보된 메모리 공간은 JS 엔진에 ..
-
TIL-2024.02.17 - 알고리즘 - 완전 탐색 알고리즘 (Brute Force)> 기초/알고리즘 2024. 2. 17. 20:10
------- 완전 탐색 알고리즘 ? 문제의 가능한 모든 경우의 수를 체계적으로 생성하고 검사하여, 문제의 해답을 찾는 방식입니다. 복잡한 알고리즘을 적용하기 전에 문제 해결의 가능성을 탐색하거나, 문제의 규모가 작을 때 유용하게 사용됩니다. 장점: 구현이 비교적 간단하고 직관적입니다. 문제의 해를 반드시 찾을 수 있다는 보장이 있습니다(해가 존재한다면). 단점: 경우의 수가 매우 많을 때, 시간 복잡도가 매우 높아질 수 있습니다. 효율성이 낮아, 큰 규모의 문제나 시간 제한이 엄격한 문제에는 적합하지 않을 수 있습니다. 예제: Q) https://school.programmers.co.kr/learn/courses/30/lessons/86491 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션..
-
TIL-2024.02.16 - Tips - .sort() 와 .sort((a,b) => a-b)) 차이> 기초/도와줘요! 2024. 2. 16. 22:09
.sort(): 기본적으로 배열의 요소를 문자열로 변환하고, 그 문자열들을 유니코드 코드 포인트 순서대로 정렬합니다. 숫자 배열을 정렬할 때 예상치 못한 결과를 초래할 수 있습니다. 예를 들어, 숫자 배열 [10, 5]를 .sort()로 정렬하면, 결과는 [10, 5]로 나오는데, 이는 숫자를 문자열로 변환하여 비교하기 때문입니다 ("10"은 "2"보다 앞서지만, 숫자로서는 10이 2보다 큽니다). .sort((a, b) => a - b): 이 형식은 배열을 숫자 크기에 따라 오름차순으로 정렬하는 비교 함수를 제공합니다. 비교 함수는 두 요소 a와 b를 비교하고, 결과가 음수이면 a를 b보다 앞에 위치시키고, 양수이면 b를 a보다 앞에 위치시킵니다 . 결과가 0이면 두 요소의 순서를 변경하지 않습니다. ..