var integer = 10; // 정수
var double = 10.12; // 실수
var negative = -20; // 음의 정수
var binary = 0b01000001; // 2진수
var octal = 0o101; // 8진수
var hex = 0x41; // 16진수
console.log(binary); // 65
console.log(octal); // 65
console.log(hex); // 65
// 표기법만 다를뿐 같은 값이다.
console.log(binary === octal); // true
console.log(octal === hex); // true
// 숫자 타입은 모두 실수로 처리된다.
console.log(1 === 1.0); // true
var pInf = 10 / 0; // 양의 무한대
console.log(pInf); // Infinity
var nInf = 10 / -0; // 음의 무한대
console.log(nInf); // -Infinity
var nan = 1 * 'string'; // 산술 연산 불가
console.log(nan); // NaN
var string = "string"; // 큰 따옴표
string = 'string'; // 작은 따옴표
string = `string`; // 백틱(ES6 템플릿 리터럴)
string = "큰 따옴표로 감싼 문자열 내의 '작은 따옴표'는 문자열로 인식된다.";
string = '작은 따옴표로 감싼 문자열 내의 "큰 따옴표"는 문자열로 인식된다.';
멀티라인 문자열 : 일반 문자열 내에서 줄바꿈 등의 공백을 표현하려면 백슬래시()로 시작하는 이스케이프 시퀀스를 사용해야한다. (\0, \b, \n, \r, \t, \…)
하지만 일반문자열과 달리 템플릿 리터럴 내(백틱사용) 에서는 모든 공백도 있는 그대로 적용된다.
var template = '<ul>\n\t<li><a href="#">Home</a></li>\n</ul>';
var template = `<ul>
<li><a href="#">Home</a></li>
</ul>`;
표현식 삽입 : 문자열은 문자열 연산자 ‘+’를 사용해 연산할 수 있다.
템플릿 리터럴 내에서는 표현식 삽입을 통해 간단히 문자열 삽입할 수 있다. (${ })
console.log('My name is ' +first + ' '+ last +'.');
console.log(`My name is ${first} ${last}.`);
var foo = 'Lee';
foo = null;
var element = document.querySelector('.myElem');
// HTML 문서에 myElem 클래스를 갖는 요소가 없다면 null을 반환한다.
console.log(element); // null
var key = Symbol('key');
console.log(typeof key); // symbol
var obj = {};
//이름이 충돌할 위험이 없는 유일무이한 값인 심벌을 프로퍼티 키로 사용
obj[key] = 'value';
console.log(obj[key]); // value
데이터 타입에 의한 메모리 공간의 확보와 참조
메모리에 값을 저장하려면 확보해야 할 메모리 공간의 크기를 결정해야 한다.
데이터 타입 종류에 따라 정해진 크기의 메모리 공간을 확보한다.
값을 참조할 때 한번에 읽어 들여야 할 메모리 공간의 크기를 결정해야 한다.
데이터 타입에 의한 값의 해석
메모리에서 읽어들인 2진수를 어떻게 해석할지 결정하기 위해 객체 타입이 필요하다.
결국 동적 타입 언어는 유연성은 높지만 신뢰성은 떨어진다.
- 변수는 꼭 필요한 경우에 한해 제한적으로 사용하기
- 변수의 유효 범위(스코프)는 최대한 좁게 만들기
- 전역 변수는 최대한 사용하지 않도록 하기. (전역변수는 어디서든 참조/변경이 가능하기 때문에 의도치 않게 값이 변경될 가능성이 높고 흐름을 추적하기 어렵다.)
- 변수보다는 상수를 사용해 값의 변경을 억제하기 (const 사용)
- 변수 이름은 변수의 목적이나 의미를 잘 파악할 수 있도록 짓기