JavaScript (1) 변수 & 데이터타입 (DAY 15)

코딩기록·2024년 10월 28일

변수 생성 vs 초기화

  • 변수 생성 : 변수를 만들겠다고 알려주는 것
    var userName;

  • 변수의 초기화(initialize) : 변수를 선언하면서 값을 설정하는 것
    var userName = '김철수';



변수 종류 : var, const, let

- var는 아래 문제점 때문에 사용 미권장

1) hoisting : 아래 상황에서 에러가 나지 않고 undefined가 뜸 (let의 경우, 'ReferenceError: Cannot access 'x' before initialization'라고 에러 뜸)

2) block level scope 미지원

  • 아래와 같이 코드를 짰을 때, 블록 안에서 변수 값을 변경하면 전역에서도 값이 변경됨
var num = 10;
if (true) {
  var num = 20;
  console.log('if 안에 num: ', num); // 20
}

3) 변수 재선언 가능

- const vs let

  • const : 상수
    -- 값일 경우 : 값 변경 불가하며, 변수명 대문자로 표기
    -- 배열일 경우 : 배열의 데이터 요소 값은 변경 가능(.pop, .push도 가능). 배열 자체의 재할당만 불가능
    -- 객체일 경우 : 객체의 프로퍼티 값은 변경 가능(삭제 포함). 객체 자체의 재할당만 불가능

  • let : 변수



데이터 타입

  • String, Number, Boolean, Null이 있음

Number

  • 정수와 실수 구분하지 않고, 모두 number로 구분

  • console.log(10 / 3) -> 3.333
    -- 모든 숫자를 integer로 판단

  • console.log(10 / 0) -> infinity
    -- 에러 뜨거나 NaN이 뜨지 않음

  • 수학적 연산 오류가 날 경우, 에러가 뜨지 않고 NaN(Not a Nubmer)가 뜸

String

  • 문자열은 '', "", ``(백틱)으로 감쌈 (실무에서는 '', ``을 실무에서 더 많이 씀)
  • 백틱의 장점
    1) (``) 은 문자열 안에 ${} 사용하여 변수 포함 가능 (`${month}월 ${day}일 ${anniversary}입니다.`)
    2) 엔터로 줄 바꿈 가능(''나 ""에서는 \n 사용. 엔터 칠 시 invalid token 에러 뜸)

Boolean

  • 모두 소문자로 쳐야 인식

Null

  • let value = null;
  • null을 data type 출력 시, javascript의 버그로 인하여 'object'라고 뜸

암묵적 형(데이터 타입) 변환

  • 문자 & 숫자 더하기 : 숫자->문자열로 자동 변환
    e.g) console.log(3+'3') // 33 출력(3을 문자열 '3'으로 인식)

  • 문자 & 숫자 더하기 외 사칙연산 : 문자열-> 숫자로 자동 변환
    e.g.) console.log(3*'3') // 9 출력('3'을 숫자 3으로 인식)

  • 수행 실패 시, 에러가 뜨지 않고 NaN라고 뜸

  • 조건문에서 0, '', null, undefined, NaN은 false로 인식

// false 
if (false) console.log('false입니다.');
if (0) console.log('숫자 0');
if (null) console.log('null입니다!');
if (undefined) console.log('undefined입니다!');
if (NaN) console.log('NaN입니다!');
if ('') console.log('\'\'입니다!');

// true
if (1) console.log('1입니다!');
if (' ') console.log('\' \'입니다!');
if ('-100') console.log('-100입니다!');
if ([1,2,3]) console.log('[1,2,3]입니다');
if (function () {}) console.log(`함수입니다`);

명시적 데이터 타입 변환

  • String(1), Number('1')

0개의 댓글