javascript

    [JavaScript] let, const 키워드와 블록 레벨 스코프

    JavaScript Deep Dive 3주차 스터디 1. var 키워드 변수의 문제점 es5까지 자바스크립트의 변수선언은 var 키워드만 존재했고, 이는 다양한 문제점을 가지고 있어 이를 개선한 let, const 키워드가 es6부터 등장했다. 변수 중복 선언 허용 var 키워드로 선언한 변수는 중복선언이 가능하다. var x = 1; var x = 100; console.log(x); // 100 var 키워드로 선언한 변수는 중복 선언하면, 초기화문의 유무에 따라 다르게 동작하는데 초기화문이 존재하는 경우 var키워드가 중복되지 않은 것처럼 동작하고 초기화문이 없는 변수 선언문은 무시된다. 함수 레벨 스코프 var 키워드는 오로지 함수의 코드 블록만을 지역 스코프로 인정한다. 따라서 외부에서 var ..

    [JavaScript] 스코프

    스코프란? 모든 식별자(변수 이름, 함수 이름, 클래스 이름등)는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조 할 수 있는 유효 범위가 결정되고, 이를 스코프라고 한다. 스코프의 종류 스코프는 지역 스코프와 전역 스코프로 나뉘는데, 지역이란 함수 몸체 내부를 말한다. 전역스코프를 가지는 전역 변수는 어디서든지 참조 할 수 있다. 지역 스코프의 경우 자신의 지역 스코프와 하위 지역 스코프에서 유효하다. 스코프 체인 함수는 중첩되어 계층적인 구조를 가질 수 있고 이에 따라 스코프가 계층적으로 연결된 것을 스코프 체인이라고 한다. 변수를 참조할 때 자바스크립트 엔진은 스코프 체인을 통해 변수를 참조하는 코드의 스코프에서 시작하여 상위 스코프 방향으로 이동하며 선언된 변수를 검색한다. 스코프 체인..

    [JavaScript] 객체 리터럴

    객체란? 자바스크립트에서 원시값을 제외한 모든 값이 객체이다. 원시값은 변경이 불가한(immutable value) 값이지만 객체는 변경 가능한(mutable value)이다. 객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 키(key)와 값(value)로 구성되어있다. 객체 리터럴은 {...} 중괄호 내에 0개 이상의 프로퍼티를 정의한 것이다. 프로퍼티 프로퍼티는 키와 값으로 ( key : value) 형태로 이루어지는데 키는 식별자 네이밍 규칙을 따르지 않을 경우 반드시 따옴표를 사용해야 한다. 객체의 프로퍼티의 키값이 중복 선언되면, 나중에 선언된 것으로 먼저 선언한 프로퍼티를 덮어쓴다. 프로퍼티의 값에는 함수도 올 수 있는데 객체의 프로퍼티에 선언된 함수를 자바스크립트에서 메서드라고 부..

    [JavaScript] 타입변환과 단축평가

    이 글은 자바스크립트를 저 나름대로 공부하고 작성하는 글로 잘못된 내용이 존재할 수 있습니다. 잘못된 내용을 발견하면 언제든 지적 부탁드립니다. 타입 변환이란? 자바스크립트의 모든 값은 타입이 존재한다. 이를 다른 타입으로 변경하는 것을 타입변환이라고 한다. 타입변환은 명시적 타입변환과 암묵적 타입변환 두 가지로 나뉘는데 명시적 타입변환은 개발자가 의도적으로 타입 변환을 진행하는 것이고, 묵시적 타입변환은 자바스크립트 엔진에 의해 자동적으로 변환되는 것이다. 문자열 타입으로 변환 문자열이 아닌 값을 문자열 타입으로 변경하는 방법 또한 명시적인 방법과 암묵적인 방법으로 나뉜다. 암묵적 변환으로는 템플릿 리터럴에 표현식을 삽입하는 것이 존재한다. `1 + 2 = ${1 + 2}` // -> "1 + 2 = ..

    [JavaScript] 제어문

    이 글은 자바스크립트를 저 나름대로 공부하고 작성하는 글로 잘못된 내용이 존재할 수 있습니다. 잘못된 내용을 발견하면 언제든 지적 부탁드립니다. 제어문 (control flow statement) 조건에 따라 코드를 실행하거나 실행하지 않을 때 사용하는것으로 조건문과 반복문을 실행할 때 사용된다. 기본적으로 제어문은 조건식에 오는 표현식을 불리언 타입으로 평가하여 truthy 할 경우 실행하고 falsy 할 경우 실행하지 않는다. 또한 자바스크립트의 제어문은 if ~else if ~ else 와 switch문 for, while 문등 기본적으로 C계열 언어와 동일한 문법으로 제어문을 작성한다. 하지만 차이점도 존재하는데 이는 switch문이다. switch문에는 C계열 언어들은 기본적으로 정수형 타입으로..

    [JavaScript] 표현식과 연산자

    이 글은 자바스크립트를 저 나름대로 공부하고 작성하는 글로 잘못된 내용이 존재할 수 있습니다. 잘못된 내용을 발견하면 언제든 지적 부탁드립니다. 무언가를 공부할 때 용어를 정확히 이해 하고 있는 것이 좋다. 용어를 정확히 이해 하고 있어야 다른 이와 함께 일이 하거나 할때 상호 오해의 소지가 없고, 또한 어떤 의미인지 스스로 정확히 인지하여 조금 더 깊은 이해를 할 수 있다. 값(value) 값이란 리터럴, 표현식등이 평가되어 생성된 결과이다. 리터럴(literal) 리터럴이란 문자또는 기호로 사용해 값을 생성하는 것으로 숫자 1, 2, 3 문자 'Hello World'등 이 자체로 값을 나타낸다. 문(statement) 문이란 프로그램을 구성하는 기본단위이자 최소 실행단위이다. 표현식(expressio..

    [JavaScript] 변수

    이 글은 자바스크립트를 저 나름대로 공부하고 작성하는 글로 잘못된 내용이 존재할 수 있습니다. 잘못된 내용을 발견하면 언제든 지적 부탁드립니다. 변수(Variable) 변수란 값을 저장하기 위한 메모리공간 또는 그 이름을 일컫는 말이다. 변수에 해당하는 메모리 공간에 값을 저장하는 것을 할당(대입)이라 하고 저장한 값을 읽는 것을 참조라고 한다. 또한 변수에 값을 최초로 할당하는 것을 초기화라고 한다. JavaScript에서의 변수 자바스크립트는 대표적인 동적타이핑 언어로 변수를 선언할 때 정적타이핑 언어와 달리 타입(c, c++, java에서 int, float, char...등)을 선언하지 않고 변수에 값을 할당하면 자동적인 해당 타입으로 설정된다. 또한 자바스크립트에서는 키워드를 통해 변수를 선언하..

    [BOJ] 1422 숫자의 신 with JavaScript

    JavaScript를 이용한 BOJ 1422 숫자의 신을 풀이한 글입니다. 문제 숫자의 신은 여러명이 있지만, 그 중에 자연수의 신은 오세준이다. 오세준은 자연수의 신으로 오래오래 살다가 어느 날 음수의 신과 전쟁을 하게 되었다. 오세준은 음수의 신 이다솜을 이기기위해서 큰 숫자를 만들기로 했다. 오세준은 지금 K개의 자연수를 가지고 있다. 오세준은 K개의 수 중에 정확하게 N개의 수를 뽑아내서 그 수를 붙여서 만들 수 있는 수중에 가장 큰 수를 만들고자 한다. 같은 수를 여러 번 이용해도 된다. 단, 모든 수는 적어도 한 번은 이용되어야 한다. 오세준이 현재 가지고 있는 K개의 수가 주어졌을 때, 이 수를 적어도 한 번 이상 이용해서 만들 수 있는 수 중에 가장 큰 수를 출력하는 프로그램을 작성하시오...

    [programmers] 가장 먼 노드 level3 with JavaScript

    JavaScript를 이용한 programmers level3 가장 먼 노드를 풀이한 글입니다. 문제 설명 개의 노드가 있는 그래프가 있습니다. 각 노드는 1부터 n까지 번호가 적혀있습니다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하려고 합니다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미합니다. 노드의 개수 n, 간선에 대한 정보가 담긴 2차원 배열 vertex가 매개변수로 주어질 때, 1번 노드로부터 가장 멀리 떨어진 노드가 몇 개인지를 return 하도록 solution 함수를 작성해주세요. 제한 사항 노드의 개수 n은 2 이상 20,000 이하입니다. 간선은 양방향이며 총 1개 이상 50,000개 이하의 간선이 있습니다. vertex 배열 각 행..

    [programmers] 네트워크 level3 with JavaScript

    JavaScript를 이용한 programmers level3 네트워크를 풀이한 글입니다. 문제 설명 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하시오. 제한사항 컴퓨터의 개수 n은 1 이상 200 이하인 자연수입니다. 각 컴퓨터는 0부터 ..