원시 타입 vs 객체 타입 원시 값 원시 타입의 값은 변경 불가능한 값이다. 원시 값을 변수에 할당하면 변수(확보된 메모리 공간)에는 실제 값이 저장된다. 원시 값을 갖는 변수를 다른 변수에 할당하면 원시 값이 복사되어 전달된다. 이를 값에 의한 전달이라 한다. 객체 값 객체는 변경 가능한 값이다. 객체를 변수에 할당하면 변수(확보된 메모리 공간)에는 참조된 값이 저장된다. 객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조 값이 복사되어 전달된다. 이를 참조에 의한 전달이라 한다. 원시 값 원시 값은 변경 불가능한 값, 읽기 전용 값이다. (불변성) 변수는 원시 값의 재할당을 통해 값을 변경할 수 있다. 변수에 원시 값을 재할당하면 새로운 메모리 공간을 확보하고 재할당된 원시 값을 저장한다. 이때..
객체 (Object) 0개 이상의 프로퍼티로 구성된 집합 프로퍼티 (Property) 프로퍼티는 키(key)와 값(value)로 구성된다. var person = { name: 'Lee', // 프로퍼티(name: 키, 'Lee': 값) age: 20 // 프로퍼티 }; 메서드 (Method) 프로퍼티 값(value)이 함수인 경우 일반 함수와 구분하기 위해 메서드라고 부른다. var counter = { num: 0, // 프로퍼티 increase: function () { // 메서드 this.num++; // this: 객체 자신을 가리키는 참조변수 } }; 객체: 프로퍼티와 메서드로 구성된 집합체 프로퍼티: 객체의 상태를 나타내는 값 메서드: 프로퍼티(상태 데이터)를 참조하고 조작할 수 있는 동작..
문제 링크 Longest Substring Without Repeating Characters - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 유형 투 포인터 (Two Pointer) 문제 풀이 해당 문제는 중복되는 문자가 없는 가장 긴 서브 스트링을 찾아 반환하는 문제이다. 단순히 생각해보면 이중 for문으로 substring을 차례대로 만들고, 중복되는 문자 체크와 최대 길이를 저장하며 문제를 해결할 수 있을 것이다. 그러나 이는 O(n^2)의 시간복..
타입 변환 기존 원시 값을 사용해 다른 타입의 새로운 원시 값으로 생성하는 것 기존 원시 값을 직접 변경하는게 아니다. 명시적 타입 변환 (= 타입 캐스팅): 개발자가 의도적으로 값의 타입을 변환하는 것 암시적 타입 변환 (= 타입 강제 변환): 표현식을 평가하는 도중에 자바스크립트의 엔진에 의해 암묵적으로 타입이 자동 변환되는 것 코드에서 암묵적 타입 변환이 발생하는지, 발생한다면 어떤 타입의 어떤 값으로 변환되는지, 그리고 타입 변환된 값으로 표현식이 어떻게 평가될 것인지 예측 가능해야 한다. 암묵적 타입 변환 암묵적 타입 변환이 발생하면 문자열, 숫자, 불리언과 같은 원시 타입 중 하나로 타입을 자동 변환한다. 문자열 타입으로 변환 템플릿 리터럴의 표현식의 평과 결과를 문자열 타입으로 암묵적 타입 ..
문제 링크 Group Anagrams - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 유형 배열, 문자열 문제 풀이 해당 문제는 여러 문자열이 담긴 배열이 입력으로 주어지고, anagram 단어끼리 묶어서 반환하는 문제이다. Anagram은 단어의 순서를 바꿔서 다른 단어를 찾는 놀이를 말한다. anagram 단어를 묶기 위해 JavaScript의 Map을 사용해 키를 기준으로 anagram 단어를 그룹핑한다. 이때, 기준이 되는 키는 각 문자열을 정렬시..
문제 링크 Add Strings - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 유형 문자열 (String) 문제 풀이 이 문제는 숫자 2개가 string 타입으로 주어지고, 숫자 2개를 더한 연산 결과를 string 타입으로 반환하는 문제이다. 초등학교 때 두 수의 덧셈할 때 일의 자리부터 더하면서 받아올림을 위의 자리로 올려주는 방법을 배웠다. 이 방법을 이용하면 된다. 받아올림(carry)은 각 자리의 합을 10으로 나눈 것이다. 해당 자리에 들어갈..
제어문 조건에 따라 코드 블록을 실행(조건문)하거나 반복 실행(반복문)할 때 사용한다. 조건문 주어진 조건식의 평가 결과에 따라 코드 블록의 실행을 결정한다. if ... else 문: 논리적 참, 거짓으로 실행할 코드 블록을 결정할 때 사용 switch 문: 다양한 케이스에 따라 실행할 코드 블록을 결정할 때 사용 break 키워드를 써야 해당 케이스 블록에서 탈출한다. 그렇지 않으면 실행 흐름이 다음 case 문으로 이동한다. // 월을 영어로 변환한다. (11 → 'November') var month = 11; var monthName; switch (month) { case 1: monthName = 'January'; break; case 2: monthName = 'February'; bre..
연산자 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산 등을 수행해 하나의 값을 만든다. ❓연산의 대상 = 피연산자(Operand) 피연산자는 값으로 평가될 수 있는 표현식이어야 한다. 그리고 피연산자와 연산자의 조합으로 이뤄진 연산자 표현식도 값으로 평가될 수 있는 표현식이어야 한다. 자바스크립트가 제공하는 다양한 연산자에 대해 살펴본다. 산술 연산자 피연산자를 대상으로 수학적 계산을 수행해 새로운 숫자 값을 만든다. 산술 연산이 불가능한 경우, NaN을 반환한다. 이항 산술 연산자 2개의 피연산자를 산술 연산해 숫자 값을 만든다. + (덧셈), - (뺄셈), * (곱셈), / (나눗셈), % (나머지) 단항 산술 연산자 1개의 피연산자를 산술 연산하여 숫자 값을 만든다. ..