number
라는 하나의 숫자 타입만 존재var integer = 10; // 정수
var double = 10.12; // 실수
var negative = -20; // 음의 정수
console.log(1 === 1.0); // true
console.log(10/0); // Infinity
console.log(10/-0); // -Infinity
console.log(1*'Stirng'); // NaN
❗️ JS는 대소문자 구별하므로, NaN을 NAN, Nan, nan으로 표현하면 에러 발생함!1) 멀티라인(multi-line) 문자열
이스케이프 시퀀스 | 의미 |
---|---|
\0 | Null |
\b | 백스페이스 |
\f | 폼 피드: 프린터로 출력할 경우 다음 페이지의 시작 지점으로 이동 |
\n | 개행(LF): 다음 행으로 이동 |
\r | 개행(CR): 커서를 처음으로 이동 |
\t | 탭(수평) |
\v | 탭(수직) |
\uXXXX | 유니코드 |
\’ | 작은따옴표 |
\” | 큰따옴표 |
\ | 백슬래시 |
var template = `<ul>
<li><a href="#">Home</a></li>
</ul>`;
console.log(template);
2) 표현식 삽입
+
를 통해 연결 가능연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작, 나머지는 덧셈 연산자로 동작
var first = 'Minji';
var last = 'Lee';
console.log('My name is'+first+' '+last+'.'); // My name is Minji Lee.
연산자로 연결하지 않고도 ${}
으로 표현식을 감싸서 표현 가능 → 표현식의 평가 결과가 문자열이 아니더라도 문자열로 강제 변환됨
var first = 'Minji';
var last = 'Lee';
console.log(`My name is ${first} ${last}.`); // My name is Minji Lee.
console.log(`1 + 2 = ${1+2}`); // 1 + 2 = 3
var foo = true;
console.log(foo); // true
foo = false;
console.log(foo); // false
var foo = 'Lee';
foo = null;
⭐ undefined와 null의 차이
둘의 차이는 개발자의 의도 차이!
undefined는 자바스크립트 엔진이 변수 선언된 이후 스스로 초기화 해주는 값! 즉, 개발자가 의도하지 않은 값
null은 개발자가 의도적으로 변수의 값이 없다는 것을 명시!
// 심벌 값 생성
var key = Symbol('key');
console.log(typeof key); // symbol
// 객체 생성
var obj = {};
// 이름이 충돌할 위험이 없는 유일무이한 값인 심벌을 프로퍼티 키로 사용
obj[key] = 'value';
console.log(obj[key]); // value
정적 타입 언어: 변수를 선언할 때, 변수에 할당할 수 있는 값의 종류, 즉 데이터 타입을 사전에 선언해야 함 ex) C, 자바
동적 타입 언어: 선언이 아닌 할당에 의해 타입이 결정됨(타입 추론), 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있음 ex) JS, python, 루비, php 등
타입 언어 | 특징 | 장점 | 단점 |
---|---|---|---|
정적 타입 언어 | 변수 선언 시점에 변수 타입이 결정됨, 타입 변경 X | 런타임에 발생하는 에러 줄여줌 | 유연성이 떨어짐 |
동적 타입 언어 | 값을 할당하는 시점에 변수의 타입이 동적으로 결정, 타입 변경 O | 유연성이 높음 | 1. 개발자 의도와 상관없이 타입이 변경될 수 있음 |
2. 변화하는 변수 값 추적하기 어려움 → 신뢰성 떨어짐 |
⚠️ 변수 사용 시 주의할 점
const
키워드 사용