JavaScript

    [ JavaScript ] 호이스팅

    호이스팅이란 ? 호이스팅은 인터프리터가 코드를 실행하기 전에 함수, 변수, 클래스 또는 임포트의 선언문을 해당 범위의 맨 위로 끌어올리는 것처럼 보이는 현상을 뜻합니다. console.log(str); // undefined var str = "Hello"; 해당 코드에서 str이라는 변수가 콘솔 아래에 선언되어 있지만, 오류가 생기지 않고, undefined를 출력합니다. 이는 호이스팅의 영향으로 코드가 실행되기 전에 선언문이 undefined 상태로 메모리에 할당되기 때문입니다. 호이스팅은 어떻게 이뤄질까 ? JS엔진이 코드를 스캔할 때 실행 컨텍스트 > 렉시컬 환경 > 환경 레코드에 유효 스코프 내의 식별자의 정보를 수집합니다. 그렇기 때문에 해당 스코프 내 어느 위치에서든 해당 식별자를 참조할 수..

    [ JavaScript ] 호이스팅

    스코프체인

    스코프란 ? 식별자는 자신이 선언된 위치에 따라서 참조할 수 있는 유효한 범위를 가지게 되며, 이를 스코프라고 합니다. 1. 전역(Global) 스코프 어느 곳에서든지 해당 변수 또는 함수에 접근할 수 있습니다. let globalStr = "Hello"; console.log(globalStr) // Hello function func() { console.log(globalStr); } func(); // Hello → 같은 위치에서든, 함수 안이든 위치 상관없이 접근할 수 있습니다. 2. 지역(Local) 스코프 유효한 범위 내에서만 해당 변수 또는 함수에 접근할 수 있습니다. 1 ) 함수(Function) 스코프 // 함수 스코프 function func() { let localStr = "Hel..

    스코프체인

    [ 면접 준비 ] 호이스팅(hoisting)이란 ?

    자바스크립트 호이스팅은 인터프리터가 코드를 실행하기 전에 함수, 변수, 클래스 또는 임포트(import)의 선언문을 해당 범위의 맨 위로 이동시키는 과정을 말합니다. - MDN Web Docs - '선언문을 해당 범위의 맨 위로 이동시키는 과정' 이 문장이 이번 포스트의 핵심입니다. 하지만, 자바스크립트 파일을 한 번이라도 생성해 보고 코드를 작성해 봤다면 코드가 움직이진 않는다는 사실을 알 거예요. 맞습니다. 코드는 움직이지 않아요. 단지 맨 위로 이동시키는 것처럼 보이게 동작합니다. Lexical Environment 호이스팅을 본격적으로 설명하기 전에, Lexical Environment라는 것을 먼저 알아두면 좋아요. Lexical Environment는 변수와 함수의 scope와 identifi..

    [ 면접 준비 ] 호이스팅(hoisting)이란 ?

    [ JavaScript ] 함수 표현식과 함수 선언식

    1. 함수 선언식 평소에 많이 볼 수 있는 기본적인 함수의 형태를 "함수 선언식"이라고 부릅니다. 아래의 코드를 보면 더 와닿을 거예요 ! function testFunc() { return '함수 선언식입니다'; } testFunc() // 함수 선언식입니다 2. 함수 표현식 "함수 표현식"은 함수가 변수에 저장되는 형태를 가지고 있어요. const testFunc = function() { return '함수 표현식입니다'; } testFunc() // 함수 표현식입니다 그렇다면, 선언식과 표현식이 따로 있는 이유가 무엇일까요 ? 3. 함수 선언식 vs 함수 표현식 1) 호이스팅 함수 선언식과 함수 표현식의 가장 큰 차이는 호이스팅 영향의 유무입니다. 함수 선언식은 제대로 콘솔이 찍히는 반면, 함수 ..

    [ JavaScript ] 함수 표현식과 함수 선언식

    [ 프로그래머스 ] 야근 지수 - JavaScript

    https://school.programmers.co.kr/learn/courses/30/lessons/12927 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 회사원 Demi는 가끔은 야근을 하는데요, 야근을 하면 야근 피로도가 쌓입니다. 야근 피로도는 야근을 시작한 시점에서 남은 일의 작업량을 제곱하여 더한 값입니다. Demi는 N시간 동안 야근 피로도를 최소화하도록 일할 겁니다. Demi가 1시간 동안 작업량 1만큼을 처리할 수 있다고 할 때, 퇴근까지 남은 N 시간과 각 일에 대한 작업량 works에 대해 야근 피로도를 최소화한 값을 리..

    [ 프로그래머스 ] 야근 지수 - JavaScript

    [JavaScript] 소수점 다루기

    1. 소수점 반올림 & 반내림 let numOne = 99.4; let numTwo = 99.5; console.log(Math.round(numOne)); // 99 console.log(Math.round(numTwo)); // 100 2. 소수점 버림 ( = 내림 ) let numOne = 11.99; console.log(Math.floor(numOne)); // 11 3. 소수점 올림 let numOne = 11.11; console.log(Math.ceil(numOne)); // 12 4. 소수 자르기 toFixed에 원하는 길이를 삽입하면, 길이만큼 자르고 반올림해서 출력해준다. let numOne = 3.141592; for (let i = 0; i

    [JavaScript] 배열에 숫자 순서대로 값 채우기

    // 원소의 개수 const cnt = 10; const arrOne = new Array(cnt + 1).fill().map((_, i) => i); const arrTwo = new Array(cnt).fill().map((_, i) => i + 1); console.log(arrOne); console.log(arrTwo); //Output [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]