식별자 코드 내의 변수, 함수, 혹은 속성을 식별하는 문자열 입니다.
JavaScript의 식별자는 대소문자를 구별하며 유니코드 글자, $, _, 숫자 로 구성할 수 있지만, 숫자로 시작할 수는 없습니다.
식별자는 코드의 일부이지만 문자열은 데이터이기 때문에, 식별자와 문자열은 다릅니다.
JavaScript에서 식별자를 문자열로 변환하는 방법은 없지만, 어떤 경우 문자열을 분석헤 식별자로 사용할 수 있습니다.
const age = {
age: 10,
['123Myname is']: 'hee',
}
console.log(age['123Myname is']); // hee
기본 자료형(Primitive) - JavaScript
Boolean
Null
Undefined
Number
String
Symbol (ES6에 추가됨)
별도
Object
TypeScript(enum타입/열거타입) 과 JavaScript(Object) 차이
enum은 코드의 성격을 띄고 Object는 데이터의 성격을 띈다. 즉 데이터를 전송하고 받는다면 Object를 사용하는게 맞지만 enum을 사용한다면 전송하는 과정에서 데이터로 변환하는 과정이 까다롭기 때문에 enum의 사용을 지양한다.
TypeScript의 장점
JavaScript 에서는 방어 코드를 따로 작성해 두어야 하지만, TypeScript 는 코드 작성에 있어서 방어 코드를 손쉽게 작성할 수 있다.
코드는 식과 문으로 표현할 수 있다.
식은 결과를 나타내는 하나의 값으로 수렴하기 때문에 세미콜론이 붙지만(return, 값, 함수 호출) 문은 문장의 동작을 나타내기 때문에 세미콜론(;)이 필요 없다. (if, for, while, ..)
구조 분해 할당
복잡한 할당 연산에서, 구조 분해 할당 구문은 배열이나 객체의 구조를 반영하여 배열이나 객체에서 데이터를 추출할 수 있게 해주는 JavaScript 표현식 입니다.
const colors = ['red', 'yellow', 'black'];
const Colors = {
blue: 'blue1',
green: 'green2',
white: 'white3',
};
const [, yellowVal] = colors; // 변수의 식별자는 상관 없지만 할당할 위치가 같아야 한다.
const { white, blue } = Colors; // 변수의 위치는 상관x, 식별자는 할당할 key와 같아야 한다.
console.log(yellowVal); // yellow
console.log(white, blue); // white3 blue1
Reference 타입의 특징 = ( Reference(참조) 변수는 주소값을 반환하기 때문에 생기는 현상 )
const wordObj = {}; // ★★★(변수가 for문 밖에 존재할 때) : A
let n = 0;
for (const item of articleRemoveArr) {
const wordObj = {}; // ★★★ (변수가 for문 안에 존재할 때) : B
wordObj.index = n++;
wordObj.word = item;
}
// (A)
// { index: 6, word: 'n' }
// (B)
// { index: 0, word: 'b' },
// { index: 1, word: 'a' },
// { index: 2, word: 'e' },
// { index: 3, word: 'k' },
// { index: 4, word: 'j' },
// { index: 5, word: 'o' },
// { index: 6, word: 'n' }
Nullish Coalescing
왼쪽 피연산자가 null이거나 정의되지 않은 경우 “??” 표현식은 오른쪽 피연산자로 평가됩니다.
그렇지 않으면 “??” 표현식은 왼쪽 피연산자로 평가됩니다.
null ?? "a"
// "a" -> null 이면 a 변수 할당
undefined ?? "a"
// "a" -> undefined 이면 a 변수 할당
// ----------------------------
false ?? true
// false
0 ?? 100
// 0
"" ?? "n/a"
// ""
NaN ?? 0
// NaN
위의 모든 왼쪽 피연산자는 거짓 값입니다.
“??” 연산자 대신 "||” 연산자를 사용했다면, 이 모든 표현식은 각각의 오른쪽 피연산자로 평가됩니다.
null || "a"
// "a"
undefined || "a"
// "a"
false || true
// true
0 || 100
// 100
"" || "a"
// "a"
NaN || 0
// 0