JS 딥 다이브 - day1

Clear·2023년 6월 22일
0

Daily Posting

목록 보기
20/27
  • 런타임 : JS엔진에 의해 자바스크립트 코드가 위에서부터 한줄씩 실행되는 시점을 의미.

  • 값(value) : 표현식이 평가되어 생성된 결과. 모든 값은 데이터 타입을 가진다.

  • 표현식(expression) : 값으로 평가될 수 있는 문. 즉, 새로운 값으로 평가되거나 기존 값을 참조한다.

    • 확장 ) 값과 표현식은 동등한 관계(동치)이다. 따라서, 값이 위치할 수 있는 자리는 곧, 표현식이 위치할 수 있는 자리임을 의미한다.
  • 문(명령문, statement) : 프로그램을 구성하는 기본 단위이자, 최소 실행 단위. 토큰으로 구성된다. 토큰은 문법적으로 더 이상 나눌 수 없는 코드의 기본요소를 말한다.

    • 문은 표현식인 문, 표현식이 아닌 문으로 나눌 수 있다. 값으로 평가된다면 전자, 아니라면 후자이다. 또한, 변수에 할당하는 방식으로도 구별 가능하다.
	var x // 값으로 평가될 수 없음
    
    x = 1 + 2 // 3이라는 값으로 평가됨

데이터 타입은 왜 필요한가?

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

변수의 타입. 변수도 타입을 갖는가?

  • 정적 타입 언어 : 변수의 선언 시점에 타입이 결정된다. 이후, 다른 타입의 값은 할당할 수 없다.
  • 동적 타입 언어 : 변수의 선언 이후, 할당되는 값에 따라 변수의 타입이 추론 된다.(type inference) 어떠한 타입의 값이라도 계속해서 재할당할 수 있다.

동적 타입 언어의 구조적 단점.

  • 변수의 값에 따라 타입이 계속해서 변화할 수 있기 때문에, 복잡한 프로그램에서는 오류의 가능성이 높아진다.
  • 유연성은 높지만, 신뢰성은 떨어진다.

솔루션

  • 변수는 꼭 필요한 경우에 제한적으로 사용한다. 변수의 남발은 오류 가능성을 증대시킨다.
  • 변수의 스코프를 최대한 좁게 만들어 부작용을 최소화한다.
  • 전역 변수 사용을 자제한다. 어디서든지 참조/변경이 가능하기 때문에 의도치 않게 값이 변경될 가능성이 높고, 다른 코드에 영향을 줄 수 있다. 프로그램의 복잡성을 증가시키고, 처리 흐름을 추적하기 어렵게 한다.
  • 변수보다 상수를 사용해, 값의 변경을 억제한다.
  • 변수의 목적이나 의미를 파악할 수 있도록 네이밍한다. 변수 이름뿐만 아니라, 모든 식별자(변수, 함수, 클래스 등)에게 적용된다.

0개의 댓글