ECMAScript 6 부터 let, const 키워드가 생김ECMAScript 5 이전엔 var 키워드로 변수를 생성함var와 const는 같은 스코프에서 사용할 수 있다. (지역 변수 느낌?)var는 같은 이름의 변수를 재선언할 수 있다.var, let, const
5가지 기본 자료형(primitive type)이 있다.숫자형은 정수 및 부동소수점 숫자를 나타낸다.일반적인 숫자 외에 Infinity(양의 무한), -Infinity(음의 무한), NaN(Not a Number)과 같은 특수 문자가 있다.숫자형엔 -(2^53 - 1)
자바스크립트에서 사용할 수 있는 수학 연산자는 아래와 같다.다른 언어와 비슷하여 헷갈릴만한 요소들만 정리해보자.\+ 연산자의 피연산자 중 하나가 문자열이면 문자열 병합을 한다.\+ 를 단항 연산자로 사용하면 데이터를 숫자형으로 변환시켜준다.변수에 값을 대입, 할당하는
자바와 거의 유사하나 조금 다른 것이 있다. 천천히 살펴보자. 비교 연산자 불린형 반환 문자열 비교 사전 순으로 문자열을 비교한다. 문자열을 비교하는 알고리즘 아래와 같다. 두 문자열의 첫 글자를 비교한다. 첫 번째 문자열의 첫 글자가 다른 문자열의 첫 글자보다
condition이 true면 body를 실행한다.여러 조건을 붙일 땐, else if를 사용한다.자바에서 삼항연산자와 같다.condition이 true면 ?이하를, false면 :이하를 반환한다.다른 언어와 똑같다.피연산자 중 하나라도 true이면 결과가 true다.
a ?? b 의 결과는 아래와 같다.a가 null도 아니고 undefined도 아니면 a그 외 경우는 b위 두 줄은 같은 동작을 하는 코드다.||는 첫 번째 true 값을 반환합니다.'??'는 첫 번째 정의된(defined) 값을 반환합니다.
자바와 똑같다.condition에는 조건문이 와야하며 true일 경우 body 부분이 반복된다.자바와 똑같다.do while 문은 body를 1회 수행한 후, condition에 따라 반복 여부가 결정된다.자바와 똑같다.위 예제에서는 for문 밖에서 i를 참조하고 있는
여러 if 문을 switch으로 나타낼 수 있다.if와 기능은 같지만 가독성이 좋아진다.변수 a의 값이 value1과 일치한다면 body1 구문을 실행한다.만약, 변수 a의 값이 value1과 일치하지 않고, value2와 일치하다면 body2 구문을 실행한다.만약,
프로그래밍을 하다보면 유사한 동작을 하는 코드를 여러 곳에 작성해야하는 경우가 있다. 이럴 때마다, 동일한 코드를 여러 군데 작성하는 것은 매우 비효율적이다. 이를 해결할 수 있는 함수에 대해 알아보자.함수 선언이란 함수를 만드는 행위를 말한다. 함수는 아래와 같이 만
자바스크립트에선 함수는 값이다. 따라서, 변수에 담을 수 있다.함수를 실행하려면 변수 이름에 괄호를 붙여주면 된다.함수를 함수의 매개변수로 전달하고, 그 함수는 나중에 호출(called back)되는데, 이를 콜백 함수라고 한다.위 예에서 showOk, showNo 함
자바에서 람다라고 불리우는 함수 축약식이 자바스크립트에선 화살표 함수다.화살표 함수의 특징은 아래와 같다.인자가 0개 일 땐, 괄호를 꼭 붙여줘야 한다.인자가 1개일 땐, 괄호를 생략할 수 있다.인자가 2개 이상일 땐, 괄호로 꼭 감싸주어야 한다.함수 본문이 1줄일 땐
자바스크립트 자료형엔 원시형(primitive type), 객체형이 있다. 원시형은 오직 하나의 데이터(문자, 숫자, 불린 등)을 담을 수 있지만 객체형은 다양한 데이터를 담을 수 있다.객체에 "key: value" 쌍으로 구성된 프로퍼티를 넣어 여러 데이터를 담을 수
객체 안에 메서드를 생성해보자.객체 안에 메소드를 생성할 때는 객체 안에 데이터에 사용하기 위함일 것이다.위에 sayName 메소드에서 실제 데이터인 name을 이용해 메소드를 완성시켜보자.다른 언어와 this 동작 방식이 다르다.this의 값이 런타임에 결정된다.화살
생성자 함수는 일반 함수와 차이점이 없지만, 두 관례를 따른다.함수 이름의 첫 글자는 대문자new 키워드를 붙여 실행new Data(...) 함수는 다음과 같이 동작한다.빈 객체를 만들어 this에 할당한다.함수 본문을 실행한다. this에 name 프로퍼티를 추가한다
Optional Chaining ?.을 사용하면 값이 없는 중첩 객체를 안전하게 접근할 수 있다.kotlin, dart에서의 null-safety와 같은 맥락같다.어떤 상황에서 사용하는지 알아보자.위와 같이 어떠한 객체 안에 존재하지 않은 프로퍼티를 참조하면 에러가 발
자바스크립트에서 숫자는 두 가지 자료형으로 나눌 수 있다.Number (64비트 부동소수점 숫자로 저장, -2^53 <= x <= 2^53)BigInt (길이에 제한 없음)0의 개수가 많을 땐, e를 붙이고 0의 개수를 붙여주면 헷갈리지 않게 표현할 수 있다
length 프로퍼티로 문자열의 길이를 알 수 있다. (함수가 아니다!!)문자열의 특정 index의 문자열을 반환할 때, 사용한다.charAt보다 \[]을 권장한다.차이점은 해당 index에 해당하는 문자열을 반환할 수 없을 때 나타난다.charAt: 빈 문자열 반환\
2가지 방법으로 배열을 생성할 수 있다.\[] 로 해당 index의 요소에 접근할 수 있다.length 프로퍼티로 배열의 길이를 알 수 있다.배열을 큐(queue)처럼 사용할 수 있다.push: 맨 끝에 요소를 추가한다.shift: 맨 앞에 요소를 반환하고 제거한 뒤,
배열 객체의 메소드 사용법을 알아보자.요소를 자유자재로 추가, 삭제, 교체할 수 있다.start로부터 deleteCount 개수를 삭제할 수 있고, items를 인자로 주면 교체해준다.start 부터 end 이전까지의 배열을 복사해 새로운 배열을 반환한다.기존 배열 요
맵은 키가 있는 데이터를 저장하는 점에서 객체와 비슷하다. 하지만 객체와 다른 점은 맵에서의 키에는 문자열 뿐만 아니라 다양한 자료형을 가질 수 있다.new Map(): 맵 객체를 생성한다.map.set(key, value): key 값에 해당하는 value를 저장한다
셋은 중복을 허용하지 않는 컬렉션이다.new Set(): 셋 객체를 생성한다.set.add(value): value를 추가하고 셋 자신을 반환한다. (체이닝 가능)set.delete(value): value를 제거하고, 제거 전 해당 value가 셋에 포함되어 있었다면
자바스크립트에선 가비지 컬렉션을 통해 더 이상 사용되지 않는 객체들을 메모리에서 지워나간다.이 때, 자료구조에 속한 객체들은 가비지 컬렉션의 대상에서 제외되는데, WeakMap과 WeakSet을 이용하면 약간 연결 관계를 지속할 수 있다.위 코드에서 data를 null
위 메소드들을 통해 일반 객체에서도 key, value, key, value를 순회할 수 있다.Object.keys(obj): 객체의 key만 담은 배열을 반환한다.Object.values(obj): 객체의 value만 담은 배열을 반환한다.Object.entries(
객체나 배열을 변수로 분해하는 문법을 구조 분해 할당이라고 한다....로 나머지 혹은 모든 요소를 모두 가져올 수 있다.배열을 분해하여 값을 가져오다보면 변수의 개수가 배열의 길이보다 클 경우, 값을 가져오지 못해 undefined 값을 할당받게 된다.이럴 때, 기본값
자바스크립트의 함수는 인수의 개수의 제약이 없다.함수를 정의할 땐, 인자가 2개로 정했지만 호출할 땐 2개가 아닌 개수를 넣어도 에러가 발생하지 않는다.다만, 결과는 앞의 인자 2개만 활용한다.인자의 개수를 정하지 않을 땐, ...(나머지 매개변수)을 붙여주면 된다.유