자바스크립트
-
자바스크립트 - 렉시컬 스코프(Lexical Scope)JavaScript/기본 2020. 7. 25. 12:27
들어가기에 앞서, Closure(클로져)를 이해하기 위해서는 반드시 렉시컬 스코프(Lexical Scope)를 이해해야 한다. 렉시컬 스코프란(Lexical Scope)란? 함수를 어디서 호출하는지가 아니라 어디에 선언하였는지에 따라 결정되는 것을 말한다. 즉, 함수를 어디서 선언하였는지에 따라 상위 스코프를 결정한다는 뜻이며, 가장 중요한 점은 함수의 호출이 아니라 함수의 선언에 따라 결정된다는 점이다. 다른 말로, 정적 스코프(Static scope)라 부르기도 하다. 아래의 예시 코드가 어떻게 동작할지 생각해보자.
-
[level1] - 최대공약수와 최소공배수(유클리드 호제법)programmers/level1 2020. 7. 24. 00:06
코딩테스트 연습 - 최대공약수와 최소공배수 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 programmers.co.kr 문제 설명 : 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다. 입출력 예 : n m return 3 12 [3, 12] 2 5 [1, 10] 접근 방법 : 이 문제를 풀기 ..
-
[level1] - 평균 구하기programmers/level1 2020. 7. 21. 19:52
코딩테스트 연습 - 평균 구하기 정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요. 제한사항 arr은 길이 1 이상, 100 이하인 배열입니다. arr의 원소는 -10,000 이상 10,000 이하인 정수입니다. 입출력 예 arr programmers.co.kr 문제 설명 : 정수를 담고 있는 배열 arr의 평균값을 return 하는 함수, solution을 완성해보세요. 입출력 예 arr return [1,2,3,4] 2.5 [5,5] 5 접근 방법 : 문제를 보면 배열의 모든 항목을 다 더해서 모든 항목의 수로 나눠서 평균을 구하는 문제이다. 정말 단순하게 반복문 돌려서 다 더한다음 배열의 길이로 나누면 되겠다 라는 생각을 했지만... 그 생각은 너무 일차..
-
자바스크립트 - 동기(Synchronous)? 비동기(asynchronous)?JavaScript/동작원리 2020. 7. 21. 15:33
들어가기 전에, 필자는 자바스크립트를 처음 접하고, 오로지 문법적인 것에만 집중해서 공부를 했었다. 하지만 개발할 때 더 중요한 것은 자바스크립트가 어떻게 동작하는지를 먼저 알고 개발을 시작해야 한다는 것이다. 안 그러면 왜 오류가 나는지도 모르고 이유를 모르니 해결할 방법을 찾을 수도 없게 되는 상황을 만나게 될 것이다. (저는 직접 겪었기 때문에...) 제목처럼 자바스크립트가 동기인지 비동기인지 그것을 먼저 알아야만 한다. JavaScript는 동기식 언어이다. 자바스크립트는 한 번에 하나의 작업을 수행한다. 한 작업이 실행되는 동안 다른 작업은 멈춘 상태를 유지하고 자신의 차례를 기다리는 것을 말한다. 마치 음식점에 여러 사람들과 갔을 때, 키오스크를 이용하여 한 사람씩 결제하는 것과 유사하다. 이..
-
자바스크립트 - 스코프 체인(scope chain)란?JavaScript/기본 2020. 7. 20. 20:01
스코프 체인(scope chain)이란? 스코프 체인(Scope Chain)은 일종의 리스트로서 전역 객체와 중첩된 함수의 스코프의 레퍼런스를 차례로 저장하고, 의미 그대로 각각의 스코프가 어떻게 연결(chain)되고 있는지 보여주는 것을 말한다. 하지만 스코프 체인(scope chain)을 이해하기 위해서 먼저 자바스크립트의 실행 컨텍스트(Execution context)를 알아야 한다. 그렇다면 실행 컨텍스트란 무엇인가? 실행 컨텍스트(Execution context)는 우리가 작성한 코드가 실행되는 환경을 말하며, scope, hoisting, this, function, closure 등의 동작원리를 담고 있는 자바스크립트의 핵심원리를 말한다. 그리고 이 실행 컨텍스트에는 두 개의 실행 컨텍스트가..
-
[level1] - 짝수와 홀수programmers/level1 2020. 7. 20. 13:06
코딩테스트 연습 - 짝수와 홀수 정수 num이 짝수일 경우 Even을 반환하고 홀수인 경우 Odd를 반환하는 함수, solution을 완성해주세요. 제한 조건 num은 int 범위의 정수입니다. 0은 짝수입니다. 입출력 예 num return 3 Odd 4 Even programmers.co.kr 문제 설명 : 정수 num이 짝수일 경우 Even을 반환하고 홀수인 경우 Odd를 반환하는 함수, solution을 완성해주세요. 입출력 예 num return 3 Odd 4 Even 접근 방법 : 딱 문제를 보자마자 삼항 연산자를 통해 참과 거짓 이렇게 2가지 조건으로 반환 값을 true일 때 짝수 Even을 반환하고, false일 때 홀수 Odd를 반환하는 식으로 접근했다. num을 2로 나눴을 때, 0이면..
-
자바스크립트 - 호이스팅(Hoisting)이란?JavaScript/기본 2020. 7. 19. 16:54
호이스팅(Hoisting)이란? scope(스코프) 안에서의 변수 선언을 최상위에서 선언한 것과 동등하다는 의미를 가진다. 즉, 변수가 선언되기 이전에 변수를 사용하면, 변수가 사용된 블럭 범위의 맨 위로 변수를 끌어올린다는 말이다. var x = '외부 scope'; function fnc() { console.log(x); // undefined var x = '내부 scope'; }; fnc(); 함수 fnc를 실행해보면, 콘솔 창에는 undefined가 출력이 된다. 왜 undefined가 출력이 될까? 그 이유는 var 키워드로 선언된 변수는 선언 단계와 초기화 단계가 한번에 이루어지는데, scope(스코프) 안에서 선언된 변수는 항상 최상위에 선언한 것과 동등한 의미를 가지기 때문에 즉, 호이..
-
자바스크립트 - scope(스코프)란?JavaScript/기본 2020. 7. 19. 01:17
scope란? 변수에 접근할 수 있는 범위를 의미한다. 이 범위는 변수의 접근성을 관리하는 정책이며, scope에는 global(전역)와 local(지역) 2개의 범위가 존재한다. global(전역) scope const name = "Lim"; // 전역 스코프 function print(){ console.log(name); // Lim } print(); console.log(name); // Lim 먼저 name이라는 변수를 정의하고 print 함수 블록 안과 밖에 console.log(name)을 출력하면 둘 다 같은 값이 나온다. 따라서, 변수 name은 전역 스코프라고 볼 수 있다. 전역 scope로 선언된 변수는 모든 범위에서 사용할 수 있다. local(지역) scope 코드 블록 내부에..