Posts 러닝 자바스크립트 #3장: 자바스크립트 개발 도구
Post
Cancel

러닝 자바스크립트 #3장: 자바스크립트 개발 도구

리터럴과 변수, 상수, 데이터타입

0과 1만으로는 일을 할 수 없고, 우리에게 익숙한 형태인 숫자와 텍스트, 날짜 등을 다뤄야 한다. 이런 것을 data type이라고 한다.

3.1 변수와 상수

변수

  • 이름이 붙은 언제든지 바뀔 수 있는 값
  • 초깃값을 할당하지 않으면 undefined가 할당된다.
  • let 문 하나에서 변수 여러 개를 선언할 수 있다.

상수

  • ES6에서 새로 생겼다.
  • 변수와 마찬가지로 값을 할당받을 수 있지만, 한 번 할당한 값을 바꿀 수 없다.
  • 보통 대문자와 밑줄만 사용한다.

3.2 변수와 상수 중 어떤 것을 사용해야 할까?

변수보다 상수를 사용하는 것이 권장된다.

  • 고정된 값이 이해하기 쉽다.
  • 값을 바꾸지 말아야 할 데이터에서 실수로 값을 바꿀 일이 줄어든다.
  • 우선 상수로 선언하고, 상수의 값이 바뀌는 것이 자연스럽다고 생각한다면, 변수로 바꾼다.

3.3 식별자 이름

식별자(Identifier)

  • 변수와 상수, 함수 이름
  • 글자나 달러 기호($), 밑줄(_)로 시작한다.
  • 밑줄 한 개 또는 두 개로 시작하는 식별자는 아주 특별한 상황, 또는 ‘내부’ 변수에서만 사용한다.
  • 제이쿼리를 사용할 경우, 달러 기호로 시작하는 식별자는 보통 제이쿼리 객체라는 의미이다.

3.4 리터럴

  • 리터럴은 값을 만드는 방법이다.
  • 자바스크립트는 개발자가 제공한 리터럴 값을 받아 데이터를 만든다.
  • 리터럴과 식별자의 차이를 아는 것은 중요하다.

3.5 원시 타입과 객체

원시 타입

원시 타입은 불변이다.

  • 숫자
  • 문자열 -> 자바스크립트에서 문자열은 원시타입이다.
  • 불리언
  • null
  • undefined
  • Symbol

객체

  • 원시 값과 달리 객체는 여러 가지 형태와 값을 가질 수 있다.
  • 객체의 유연한 성질 때문에 커스텀 데이터 타입을 만들 때 객체를 많이 사용한다.
  • 내장된 객체 타입
    • Array
    • Date
    • RegExp
    • MapWeakSet
  • 원시 타입 중 숫자, 문자열, 불리언에 대응하는 객체 타입인 Number, String, Boolean이 있다. 이들 대응하는 객체에 실제 값이 저장되지는 않는다. 대응하는 원시 값에 기능을 제공하는 역할을 한다.

3.6 숫자

  • 자바스크립트는 실제 숫자의 근사치를 저장할 때 IEEE-764 배정도 부동소수점 숫자 형식을 사용한다. 이 형태를 더블이라고 한다. 즉 자바스크립트에서 숫자는 결국 더블 형식으로 저장된다.
  • 더블 형식의 근사치결과에서의 오차: 무한한 값을 유한한 메모리 안에서 가능한 정확히 짐작하려고 생긴 결과이다.
  • 자바스크립트에는 숫자형 데이터 타입이 하나밖에 없다. 이는 자바스크립트를 고성능 정수 연산이나 정밀한 소수점 연산이 필요한 애플리케이션에서는 쓰기 어렵도록 만든다.
  • 자바스크립트는 10진수, 2진수, 8진수, 16진수 네 가지 숫자형 리터럴을 인식한다.
  • 그 외에도 Infinity, -Infinity, NaN(숫자가 아님을 나타냄)라는 특별한 값이 있다.
    • 이들은 숫자형 리터럴이 아니지만, 숫자형 값이다.
    • 이들은 계산에 사용하는 숫자라기보다는 일종의 플레이스홀더이다.
  • 10진수, 16진수, 지수 등 어떤 리터럴 형식을 사용해도 결국 숫자는 더블 형식으로 저장된다.
  • 숫자에 대응하는 Number 객체에는 중요한 숫자형 값에 해당하는 유용한 프로퍼티가 있다.
1
2
3
4
5
6
7
const small = Number.EPSILON; // 1에 더했을 때 1과 구분되는 결과를 만들 수 있는 가장 작은 값이다. 근사치는 2.2e-16이다.
const bigInt = Number.MAX_SAFE_INTEGER; // 표현할 수 있는 가장 큰 정수
const max = Number.MAX_VALUE; // 표현할 수 있는 가장 큰 숫자
const minInt = Number.MIN_SAFE_INTEGER; // 표현할 수 있는 가장 작은 정수
const nInf = Number.NEGATIVE_INFINITY; //-Infinity
const nan = Number.NaN; //NaN
const Inf = Number.POSITIVE_INFINITY; //Infinity

3.7 문자열

  • 자바스크립트 문자열은 유니코드 텍스트이다.
  • 유니코드는 텍스트 데이터에 관한 표준이며 사람이 사용하는 언어(이모티콘 포함) 대부분의 글자와 심볼에 해당하는 code point를 포함하고 있다.
  • 유니코드 자체는 모든 언어의 텍스트를 나타낼 수 있지만, 유니코드를 사용하는 소프트웨어가 모든 코드 포인트를 정확히 렌더링한다고 보장하지 않는다.

3.8 특수문자

  • 값을 문자열 안에 써야 하는 일이 많다. 이때 문자열 병합(concatenation)을 통해 변수나 상수를 문자열 안에 쓸 수 있다.

  • 문자열 템플릿/문자열 채우기

    1
    2
    
    let currentTemp = 19.5;
    const message = `The current temperature is ${currentTemp}\u00b0C`;
    

여러줄 문자열

첫행 마지막 역슬래시는 줄바꿈 문자를 이스케이프하지만, 문자열에 줄바꿈 문자를 삽입하지는 않는다.

1
2
3
const multiline = "line\
line2"; 
//"lineline2"

줄바꿈 문자가 들어가게 하려면 다음과 같이 한다.

1
2
3
4
5
6
const multiline = "line1\n\
line2";
/*
"line1
line2"
*/

백틱을 사용한 문자열에는 좀 더 상식적인 결과가 나온다.

1
2
3
4
5
6
const multiline = `line1
line2`;
/*
"line1
line2"
*/

의도치 않게 들여쓰기 결과가 문자열에 포함될 수 있다.

1
2
3
4
5
6
7
8
const multiline = `line1
	line2
	line3`;
/*
"line1
	line2
	line3"
*/

숫자와 문자열

자바스크립트는 필요하다면 숫자가 들어 있는 문자열을 자동으로 숫자로 바꾼다.

1
2
const result1 = 3 + '30'; // 문자열 '330'
const result2 = 3 * '30'; // 숫자 90

3.9 불리언

모든 값은 참 같은 값(truthy), 거짓 같은 값(falsy)로 나눌 수 있다.

3.10 심볼

심볼(symbol)은 유일한 토큰을 나타내기 위해 ES6에서 도입한 새 데이터타입니다. 심볼은 항상 유일하다. 어떤 심볼과도 일치하지 않다.

이런 면에서 심볼은 객체와 유사하다. 객체는 모두 유일하다.

항상 유일하다는 점을 제외하면 심볼은 원시 값의 특징을 모두 가지고 있으므로 확장성 있는 코드를 만들 수 있다.

심볼은 Symbol() 생성자로 만든다. 원한다면 생성자에 간단한 설명을 추가할 수 있다.

1
2
3
const RED = Symbol("The color of a sunset!");
const ORANGE = Symbol("The color fo a sunset!");
RED === ORANGE; // false: 심볼은 모두 서로 다르다.

다른 식별자와 혼동해서는 안 되는 고유한 식별자가 필요하다면 심볼을 사용하자.

심볼을 만들 때 new 키워드를 사용할 수 없으며, 대문자로 시작하는 식별자는 new와 함께 쓴다.

3.11 nullundefined

  • null이 가질 수 있는 값은 null 하나고, undefined가 가질 수 있는 값고 undefined 하나다.
This post is licensed under CC BY 4.0 by the author.

HTML5 CSS3 웹 표준의 정석 #3장: 이미지와 하이퍼링크

모두의 네트워크 #4장: 데이터 링크 계층

Loading comments from Disqus ...