
: 자바스크립트에선 문자열(string)을 따옴표로 묶는다.
let str = "Hello";
let str2 = 'Single quotes art ok too;
let phrase = `can enbed another ${str}`;
(1) 큰따옴표: "Hello"
(2) 작은따옴표: 'Hello'
(3) 역 따옴표(백틱, backtick): Hello
: 큰따옴표(1)과 작은따옴표(2)는 '기본적인' 따옴표로, 자바스크립트에서는 이 둘의 차이를 두지 않는다.
: 그러나 역 따옴표로 변수나 표현식을 감싼 후 ${...}안에 넣어두면, 아래와 같이 원하는 변수나 표현식을 문자열 중간에 손쉽게 넣을 수 있다.
let name = "John";
//변수를 문자열 중간에 삽입
alert(`Hello, ${name}!`);
//Hello, John!
//표현식을 문자열 중간에 삽입
alert(`the result is ${1+2}`);
// the result is 3
-> 큰따옴표나 작은따옴표를 사용하면 중간에 표현식을 넣을 수 없다는 점에 주의!
aelrt("the result is ${1+2}");
//the result is ${1 + 2}
// (큰따옴표는 확장 기능을 지원하지 않는다.)
: 불린형(논리 타입)은 true와 false 두 가지 값밖에 없는 자료형이다.
let nameFieldChecked = true;
//네, name field가 확인되었습니다(checked).
let ageFieldChecked = false;
//아니요, age field를 확인하지 않았습니다(not checked)
-> 불린형의 긍정 yes==true, 부정 no==false를 의미한다.
let isGreater = 4>1;
alert(isGreater);
// true (비교 결과: "yes")
-> 불린 값은 비교 결과를 저장할 떄도 사용한다.
: null 값은 지금까지 말한 자료형 중 어느 자료형에도 속하지 않는 값이다.
: null 값은 오로지 null 값만 포함하는 별도의 자료형을 만든다.
let age = null;
자바스크립의의 null은 다른 이외의 언어의 null과 성격이 다르다.
다른 언어에서는 null을 '존재하지 않는 객체에 대한 참조'나 '널 포인터(null pointer)'를 나타낼 때 사용한다.
하지만 자바스크립트에서는 null을 '존재하지 않는(nothing)' 값, '비어 있는(empty)' 값,
알 수없는(unknown)'값을 나타내는데 사용한다.
let age = null;은 나이(age)를 알 수 없거나 그 값이 비어있음을 보여준다.
: undefined 값도 null 값 처럼 자신만의 자료형을 형성한다.
: undefined는 '값이 할당되지 않은 상태' 를 나타낼때 사용한다.
-> 변수는 선언 했지만, 값을 항당하지 않았다면 해당 변수에 undefined가 자동으로 항당돤다.
let age;
alert(age);
//'undefinded'가 출력됨
개발자가 변수에 undefined를 명시적으로 할당하는 것도 가능하다.
let age = 100;
//값을 undefined로 바꿈
age = undefined'
alert(age);//undefined
-> 그러나 undefined를 직접 할당하는 것을 권장하지 않는다.
-> 변수가 '비어있거나', '알 수 없는' 상태라는걸 나타내려면 null을 사용하는 것을 권장한다.
-: undefined는 값이 할당되지 않은 변수의 초기값을 위해 예약어로 남겨두는 것이 좋다.
: 인수의 자료형을 반환한다. 자료형에 따라 처리 방식을 다르게 하고 싶거나 변수의 자료형을 빠르게 알아내고자 할 때 유용하다.
문법
1) 연산자: typeof x
2) 함수: typeof(x)
-> 괄호가 있든 없든 결과가 동일하다.
typeof x를 호출하면 인수의 자료형을 나타내는 문자열을 반환한다.
typeof undefined; //undefined
typeof 0; //number
typeof 10n; //bigint
typeof true; //boolean
typeof "foo"; //string
typeof Symbol("id"); //symbol
typeof Math; //object
typeof null; //object
typeof alert //function
-> Math는 수학 연산자를 제공하는 내장 객체이므로 object가 출력된다.
-> typeof null의 결과는 object이다. null은 별도의 고유한 자료형을 가지는 특수 값으로 객체가 아니지만, 하위 호환성을 유지하기 위해 이런 오류를 수정하지 않고 남겨둔 상황이다, 언어 자체의 오류이므로 null이 객체가 아님을 유의하기 바란다.
-> typeof는 피연산자가 함수면 function을 반환한다. 그런데 '함수'형은 따로 없다. 함수는 객체형에 속한다. 이런 동작 방식이 형식적으론 잘못되긴 했지만, 아주 오래전에 만들어진 규칙이고 하위 호환성 유지를 위해 남겨진 상태이다.
// 아래의 스크립트 결과를 예측해보자.
let naem = "lee";
alert(`Hello ${1}`);
// Hello 1
alert(`Hello ${"name"}`);
// Hello name
alert(`Hello ${name}`);
// Hello lee