모던 자바스크립트-Deep Dive 06,07

Gavri·2022년 3월 16일
0

DeepDive

목록 보기
3/12

데이터타입

구분
원시타입

  • Number : 숫자 정수 실수 구분없이 하나의 숫자 타입 | Infinity: 양의무한대,-Infinity:음의 무한대, NaN: 연산불가
  • String : 문자열 ( UTF-16기준, "",'',``로 표현한다. )
  • Boolean : 논리적 참 과 거짓
  • undefined : var 키워드로 선언된 변수에 암묵적으로 할당되는 값
  • null : 값이 없다는 것을 의도적으로 명시할 때 사용하는 값
  • symbol : ES6에 추가된 7번째 타입

객체타입

  • 객체,함수,배열 등

데이터 타입의 필요성

  • 데이터 타입에 따른 메모리셀 갯수를 지정하기 위해 필요하다
  • 타입에 의한 값의 해석이 달라질 수 있다. 0100 0001 은 숫자로 65 문자로 A이다 타입에 따른 값 표현이 틀리다.

동적 타이핑

js 는 동적 타입 언어이다. 동적 타입 언어는 값에 의해 변수의 타입이 변경된다.
C,JAVA 같이 정적 타입 언어의 경우 선언한 타입에 맞는 값만 할당할 수 있다.

동적타입 언어는 편리한 반면 그만큼 위험이 존재하는 언어이다. 개발자의 의도와 상관없이 타입이 변경될 수도 있기에 아래의 주의 사항을 생각하며 코딩하는 것이 좋다

  • 변수는 꼭 필요한 경우에 한해 제한적으로 사용한다. 변수 개수가 많아 질 수록 오류가 발생할 확률도 높아진다.
  • 변수의 유효 범위(스코프)는 최대한 좁게 만들어 부작용을 억제한다
  • 전역 변수는 최대한 사용하지 않도록 한다.
  • 변수보다는 상수를 사용해 값의 변경을 억제한다. (const)
  • 변수의 이름은 목적이나 의미를 파악할 수 있도록 네이밍한다. 특히 식별자의 유효범위가 넓을수록 네이밍에 유의한다.

코드는 오해하지 않도록 작성해야하며, 개발자를 위한 문서이기도 하니 가독성이 좋고 네이밍이 올바르게끔 작성하도록 노력해야 한다.

연산자

산술 연산자

이항 산술 연산자

이항 산술 연산자의미부수효과
+덧셈X
-뺄셈X
*곱셈X
/나눗셈X
%나머지X

단항 산술 연산자

단항 산술 연산자의미부수효과
++증가O
--감소O
+어떠한 효과도 없다.X
-양수를 음수로, 음수를 양수로 반전한 값을 반환한다.X

할당 연산자

할당 연산자의미부수효과
+=x += 5 === x = x + 5O
-=x -= 5 === x = x - 5O
*=x = 5 === x = x 5O
/=x /= 5 === x = x / 5O
%=x %= 5 === x = x % 5O

비교 연산자

동등/일치 비교 연산자

비교 연산자의미설명
==동등 비교x와 y 값이 같다
===일치 비교x와 y의 값과 타입이 같다
!=부동등 비교x와 y의 값이 다름
!==불일치 비교x와 y의 값과 타입이 다름

NAN 의 경우 자신과 일치하지 않는 유일한 값이다. isNaN(빌트인함수) 를 통해 판별해야 한다.

대소 관계 비교 연산자

대소 관계 비교 연산자설명
>x와 y 보다 크다
<x와 y 보다 작다
>=x와 y 보다 크거나 같다
<=x와 y 보다 작거나 같다

삼항 조건 연산자

const a = true;
const b = a ? "true":"false" // b === "true"

논리 연산자

  • || : OR
  • && : AND
  • ! : NOT

쉼표 연산자

쉼표 연산자는 왼쪽 피연산자부터 차례대로 피연산자를 평가하고 마지막 피연산자의 평가가 끝나면 마지막 피연산자의 평가 결과를 반환한다.

var x,y,z;
x = 1, y = 2, z = 3; // 3

그룹 연산자

소괄호('()')로 피연산자를 감싸는 그룹 연산자는 자신의 피연산자인 표현식을 가장 먼저 평가한다.

10 * 2 + 3 ; // -> 23
10 * (2 + 3); // -> 50

typeof 연산자

typeof 연산자는 피연산자의 데이터 타입을 문자열로 반환한다.
string,number,boolean,undefined,symbol,object,function 중 하나를 반환 하며 null(값) 은 반환하지 않는다.

지수 연산자

ES7 에서 도입된 지수 연산자 **

2 ** 2; // 4
2 ** 2.5; // 5.65656
Math.pow(2,2); // 4 
// Math.pow 보다 가독성이 뛰어나다.
Math.pow(Math.pow(2,2),2) === 2 ** 2 ** 2; 
// 음수의 경우 괄호로 묶어야 한다
(-5) ** 2; // 25

그 외의 연산자

연산자개요
?.옵셔널 체이닝 연산자
??null 병합 연산자
delete프로퍼티 삭제
new생성자 함수를 호출할 때 사용하여 인스턴스를 생성
instanceof좌변 객체가 우변의 생성자 함수와 연결된 인스턴스인지 판별
in프로퍼티 존재 확인
profile
모든건 기록으로

0개의 댓글