JS - data type

소밍·2022년 2월 25일
0

Javascript

목록 보기
1/11
post-thumbnail

'use strict';
바닐라 자바스크립트로 프로그래밍할 때는 파일 제일 위에 입력!

1. variable (변수 ; mutable)

let 이용하여 변수 선언
variable은 메모리에 읽고 쓰는 것이 가능

let name='abc'; 
console.log(name);
-> abc 출력

name ='hello';
console.log(name);
name이라는 변수에 hello값을 다시 할당 
-> hello 출력

어플리케이션 실행하게 되면 어플리케이션 마다 쓸 수 있는 메모리가 할당됨.
메모리는 텅텅 비어져있는 박스들. 어플리케이션마다 쓸 수 있는 박스들의 개수가 제한적.

  • block scope : 코드를 {블럭}안에 작성하면 블럭 밖에선 변수에게 접근 불가
  • global scope : 블럭 쓰지 않고 파일안에 바로 정의하는 것, 어느 곳에서나 접근 가능
  • var
    선언하기 전에 값을 할당하는 것이 가능..
    블럭 스콥이 없음 - 블럭을 철저히 무시함
  • var hoisting (호이스팅)
    어디에 선언했느냐에 상관없이 항상 제일 위로 선언을 끌어올리는 것
age = 4;
var age;

2. constant (immutable)

값을 선언함과 동시에 할당한 뒤로는 값을 절대 변경할 수 없음 / 읽기만 가능

const minNumber = 3;
  • 보안성 좋음
  • 코드 변경 실수 방지

3. variable types

primitive
더 이상 작은 단위로 나뉘어질 수 없는 한가지 아이템
value 자체가 메모리에 저장됨
number, string, boolean, null, undefined, symbol

object
싱글 아이템들을 여러개 묶어서 한 단위로, 한 박스로 관리
너무 커서 메모리에 한번에 다 못올라감
object를 가르키는 reference가 메모리에 저장됨.
즉 name:'yosi'와 age:20이 저장됨.

const yosi ={name:'yosi', age:20};
나이를 변경하고 싶다면
yosi.age=21;

한번 할당된 오브젝트는 다른 오브젝트로 변경 불가

function도 데이터 타입 중 하나
first-class-function이 지원된다 = 이 프로그래밍 언어에서는 펑션도 다른 데이터 타입처럼 변수에 할당가능하고, 함수의 파라미터(인자)로도 전달되고 함수에서 return 타입으로도 펑션을 리턴할 수 있다.

number

양수를 0으로 나누게되면 infinity
음수를 0으로 나누게되면 -infinity(negativeInfinity)
숫자가 아닌 string을 숫자로 나누면 NaN (not a number)

string

const greeting = 'hello' + asahi;
//+ 기호를 사용하여 일반 string과 다른 변수를 붙일 수 있음//

//template literals (string)//
const hiName =`hi ${asahi}!`;
//hi와 변수의 값이 자동적으로 붙여져서 나옴 //
//hi asahi!로 출력 됨//

boolean

false : 0, null, undefined, NaN, ''
true : any other value

null

null값이 할당

let nothing = null;

undefined

선언은 되었지만 값이 지정되지 않은 것 (미정의 상태)

let X;

symbol

map이나 자료구조에서 고유한 식별자가 필요하거나
동시다발적으로 일어날 수 있는 코드에서 우선순위 주고 싶을 때
정말 고유한 식별자가 필요할 때 사용
같은 string으로 작성했어도 고유한 symbol이 됨!
항상 symbol.description 으로, string으로 변환해서 출력

4. dynamic typing

: dynamically typed language

선언할 때 어떤 타입인지 선언하지 않고,
프로그램이 동작할 때 할당된 값에 따라서 타입이 변경될 수 있다는 것


  • immutable data types : primitive types, frozen objects
  • mutable data types : all objects by default are mutable in JS
  • favor immutable data type always for a few reasons:
    • security
    • thread safety
    • reduce human mistakes
profile
생각이 길면 용기는 사라진다.

0개의 댓글