[딥다이브] 6장 데이터 타입, 7장 연산자

주니·2023년 4월 8일
0

딥다이브

목록 보기
3/20

6. 데이터 타입

자바스크립트에는 총 7개의 데이터 타입을 가진다.
원시타입인 숫자, 문자열, 불리언, undefined, boolean, null, 심벌 그리고 객체타입.

이 중 문자열에 속한 표기법인 '템플릿 리터럴'을 조금 더 살펴보고자 한다.

템플릿 리터럴

  • ES6부터 도입
  • 일반적인 문자열 표현에서 사용하는 따옴표 대신 백틱(``)을 사용하여 표현한다.
  • 멀티라인 문자열, 표현식 삽입, 태그드 템플릿 등 편리한 문자열 처리 기능을 제공한다.

기존의 문자열 표현에서 사용했던 이스케이프 시퀸스를 사용할 필요가 없어 코드를 더욱 직관적이고 편리하게 짤 수 있다. 다음은 템플릿 리터럴을 사용한 간단한 예제 코드이다.

let str1 = template
let str2 = literal

console.log(`편리한 ${str1} ${str2}사용법!`) // 편리한 template literal 사용법!

데이터 타입의 필요성

데이터 타입이 필요한 이유는 다음과 같다.

  • 값을 저장할 때 확보해야 하는 메모리 공간의 크기를 결정하기 위해
  • 값을 참조할 때 한 번에 읽어 들여야 할 메모리 공간의 크기를 결정하기 위해
  • 메모리에서 읽어 들인 2진수를 어떻게 해석할지 결정하기 위해

동적 타입 언어 vs 정적 타입 언어

동적 타입 언어: 변수에 어떤 데이터 타입의 값이라도 자유롭게 할당할 수 있다.

  • 우리가 학습하는 JavaScript 그리고, Python등이 이에 속한다.
  • 유연성(flexibillit)은 높지만 신뢰성(reliability)은 떨어진다는 문제점이 있다.

정적 타입 언어: 변수를 선언할 때 데이터 타입을 사전에 선언해야 한다.

  • CJava등이 있다.

변수를 사용할 때 주의할 사항

  • 꼭 필요한 경우에 제한적으로 사용하자
  • 변수의 유효 범위(스코프)는 최대한 좁게 설정하자
  • 전역변수는 사용을 지양하자
  • 변수보다는 상수를 사용하자
  • 명확한 네이밍 : 첫 아이의 이름을 짓듯이 심사숙고하여 설정하자

There is No Silver Bullet : 은탄환은 없다.

과거 개발자의 문화에 대해서 다루는 서적에서 접했던 문장이 이번 챕터에 인용되어 반가웠다.
'은탄환은 없다' 소프트웨어 개발의 복잡성을 일거에 해소할 마법(은탄환)같은 방법은 없다는 말이다. 전하고자 하는 메세지가 작은 울림을 주었던 문장이다.
요행 혹은 트릭 따위로 당장의 불편함과 당면의 문제는 해소된 것 처럼 보여도 사실은 그렇지 않은 경우가 대부분일 것이다. 조금 의역하여
본연에 집중하고 기초를 쌓아올려 정진하자 라는 새김으로 남긴다.


7. 연산자

연산자(operater)란?

하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산 등을 수행해서 하나의 값을 만든다.
연산자는 값으로 평가된 피연산자를 연산해 새로운 값을 만든다.

암묵적 타입 변환(타입 강제 변환)

개발자의 의도와는 상관 없이 자바스크립트 엔진에 의해 타입이 자동으로 변환하기도 한다.
false = 0, true = 1 과 같은 예가 있다. 이를 산술 연산자와 함께 사용하면 변환된 값을 적용해 계산한다.

동등 비교 vs 일치비교

동등 비교 == or != , 일치 비교 === or !==.

  • 동등 비교는 좌항과 우항의 피연산자를 비교할 때 먼저 암묵적 타입 변환을 통해 타입을 일치 시킨 후 비교한다.
  • 일치 비교는 좌항과 우항의 피연산자가 타입도 같고 값도 같은 경우에 한하여 true를 반환한다.

동등비교는 상황에 따라 편리할 수도 있지만, 보다 엄격한 일치 비교 연산자를 사용하는 습관을 들이자!

삼항 조건 연산자

사용법 : 조건식 ? 조건식 true값 : 조건식 false값

  • 간단한 조건식의 경우 짧고 간단하게 작성할 수 있으므로 사용법을 연습하자!
  • 주의!! if else문도 삼항 조건 연산자와 표현식과 유사하게 처리 할 수 있으나, if else문은 값처럼 사용할 수 없다(삼항 조건 연산자는 가능)
  • 조건에 따라 수행해야 할 문이 하나면 삼항 조건 연산, 여러개이면 if else문 사용하자!

0개의 댓글