[TIL] 코어 자바스크립트

이지예·2022년 4월 11일
0

JavaScript

목록 보기
5/24

코어 자바스크립트는 자바스크립트의 핵심 개념을 말한다.
오늘 배운 개념들을 정리해보자면 다음과 같다

엄격모드

자바스크립트는 오랫동안 기존의 기능을 변경하지 않으면서 새로운 기능이 추가 되었지만, ES5(ECMAScript)가 등장하고부터 기존 기능 중 일부가 변경되었다.
기능의 변경으로 하위 호환성의 문제가 생기지 않기 위해 use strict라는 지시자를 활성했을때만 변경사항이 활성화 되게 된다.

이 지시자가 스크립트 최상단에 오면 스크립트 전체가 모던한 방식으로 동작하고, 함수 내부 최상단에 오면 해당 함수만 엄격모드로 실행된다. 한번 실행시키면 취소할 수 없다.

만약 클래스나 모듈을 사용하게 되면 모던 자바스크립트가 제공하기 때문에
use strict가 자동으로 적용되어 use strict를 생략해도 된다.

변수와 상수

자바스크립트에서는 let, const, var로 변수를 생성 할 수 있는데,
한줄에 여러 변수를 선언하는 것도 가능하다.

let num=1,name='John'

예전에는 선언자 없이도 변수 선언이 가능했지만, 엄격모드에서 에러를 발생 시킬 수 있기 때문에 선언자를 쓰는것이 좋다.

나는 변수를 여러개 만들면 코드가 길어져서 좋지 않은 방법이라고 생각했었고 그래서 최소한의 변수만 활용하려고 했었다. 그런데 오히려 변수를 재사용하면 해당 변수의 정보를 알기 위해서 디버깅에 쏟는 시간이 길어지게 되어 변수 추가가 좋은 방법이라는 것을 배웠다.

자료형

자바스크립트에는 여덟가지 기본 자료형이 있다. 자바스크립트의 변수는 자료형에 관계없이 모든 데이터일 수 있는데,
이와같이 변수에 저장되는 값의 타입이 언제든지 바뀔 수 있는 언어를 동적 타입 언어라고 부른다.

let ex=1;
console.log(typeof(ex)) //number
ex='lala'
console.log(typeof(ex)) //string
  1. 숫자형
    숫자형에는 숫자외에도 Infinity, -Infinity, NaN같은 값이 포함된다.
    NaN값은 추가연산을 해도 그대로라서, 연산과정 중에 NaN값이 포함되어있다면 모든 결과에 영향을 미친다.

  2. bigInt
    (2^53)-1보다 크거나, -(2^53)-1보다 작은 정수는 숫자형으로 나타낼 수 없다. bigInt형은 길이에 상관없이 정수를 나타낼 수 있다. 정수 리터럴(숫자로 인식되는 문자열)끝에 n을 붙이면 만들어진다.

  3. 문자형
    문자열을 따옴표로 묶는데, 큰따옴표, 작은 따옴표 말고도 역따옴표(백틱)이 있다. 역따옴표로 변수나 표현식을 감싸고 ${}안에 넣어주면 문자열 중간에 원하는 변수나 표현식을 넣을 수 있다.

let ex='lala'
console.log(`lulu, ${ex}`)
console.log(`the result if ${1+2}`)
console.log(`hello ${"name"}`) //이 경우 큰 따옴표는 무시되고, hello name이라고 출력된다.
  • C나 Java와 달리 글자 하나를 저장할 때 쓰이는 자료형인 글자형(char)은 지원하지 않는다.
  1. 불린형
  2. null
    다른 언어에서는 null을 존재하지 않는 객체에 대한 참조나 널포인트를 나타낼때 사용하지만, 자바스크립트에서는 존재하지않는 값, 비어있는값, 알수없는 값을 나타내는데 사용한다.
  3. undefined
    값이 할당되지 않은 상태를 나타낸다. 변수는 선언했지만, 값이 할당되지 않은 경우에 undefined가 자동으로 할당된다. 변수의 값과 변수의 타입 모두 undefined가 된다.
  4. 객체형
    다른 자료형은 한가지만 표형 가능하기 때문에 원시(primitive)자료형이라 부르고, 객체는 복잡한 객체(entity)를 표현할 수 있다.
  5. 심볼형
  • 추후에 배울 예정

typeof 연산자

typeof x , typeof(x)형태로 사용하고, 결과는 동일하다.
null의 타입은 객체라고 뜨지만, 고유한 자료형을 가지는 특수값이지 객체가 아니다. 하위호환성 유지를 위해 오류를 수정하지 않고 남겨둔 상태이다.
피연산자가 함수면 function을 반환하지만, 함수형은 없다. 함수는 객체형에 속한다. 이 또한 하위호환성 유지를 위해 오류를 수정하지 않고 남겨둔 상태이다.

참고 사이트 : https://ko.javascript.info/

0개의 댓글