Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript 백엔드 개발의 핵심 기본 개념 총정리

JavaScript는 주로 웹 스크립팅에 사용되는 프로그래밍 언어로, 가볍고 인터프리터 방식으로 동작하는 언어입니다. 웹 개발 분야에서 가장 널리 사용되는 언어 중 하나이며, 브라우저마다 자체적인 JavaScript 엔진을 내장하고 있어 브라우저 환경에서 코드가 정상적으로 실행됩니다.

대표적인 브라우저와 해당 브라우저에서 사용되는 JavaScript 엔진은 다음과 같습니다.

  • Firefox — SpiderMonkey
  • Google Chrome — V8
  • Safari — JavaScriptCore
  • Microsoft Internet Explorer / Edge — Chakra

브라우저마다 서로 다른 스크립트 해석 방식으로 인한 호환성 문제를 막기 위해, 모든 브라우저가 공통으로 따르는 표준 규격이 필요했습니다. 이를 위해 ECMA(유럽 컴퓨터 제조업체 협회)라는 표준화 단체가 JavaScript의 표준인 ECMAScript를 제정하여 관리하고 있습니다.

JavaScript 엔진의 동작 원리

JavaScript 코드가 어떤 브라우저에서든 올바르게 실행되도록, JavaScript 엔진은 크게 두 단계로 나누어 동작합니다.

1. 생성 단계(Creation Phase)

생성 단계에서는 엔진이 전체 코드를 처음부터 끝까지 훑으며 문법 오류(Syntax Error)가 있는지 검사합니다. 오류가 발견되면 즉시 에러를 출력합니다. 또한 코드 내에 선언된 변수와 함수를 미리 확인하여 각각에 필요한 메모리 공간을 할당합니다. 이 과정에서 변수는 호이스팅(Hoisting)되어 초기화됩니다.

2. 실행 단계(Execution Phase)

실행 단계에서는 실제로 코드가 한 줄씩 실행됩니다. 변수에 값이 할당되고, 함수가 호출되며, 실행 도중 발생할 수 있는 다양한 런타임 에러를 처리하게 됩니다.

JavaScript '==' 연산자와 '===' 연산자의 차이

JavaScript에는 두 가지 종류의 동등 비교 연산자가 존재하며, 그 동작 방식이 서로 다릅니다.

== 연산자(추상적 동등 비교)는 두 값이 같은지를 비교할 때 값 자체만을 확인합니다. 비교 대상의 데이터 타입이 다르면 자동으로 타입 변환(형 변환)을 수행한 후 값을 비교하기 때문에, 타입이 달라도 값만 같으면 true를 반환합니다.

=== 연산자(엄격한 동등 비교)는 값뿐만 아니라 데이터 타입까지 함께 비교합니다. 따라서 값과 타입이 모두 일치해야 true를 반환하며, 예상치 못한 형 변환으로 인한 버그를 방지할 수 있어 일반적으로 더 안전한 방식으로 권장됩니다.

예제

<script>
document.write(34 == "34");
document.write('<br>')
document.write(98 === "98");
</script>

실행 결과

true
false

위 예제에서 34 == "34"는 숫자와 문자열이라는 서로 다른 타입이지만 값이 같으므로 true를 반환하고, 98 === "98"은 타입이 다르므로 false를 반환합니다.

JavaScript 불리언(Boolean) 값

불리언 변수는 참(True)과 거짓(False) 두 가지 값만 가질 수 있는 변수입니다. JavaScript에서 유효한 불리언 값은 truefalse입니다.

조건문에서 true로 평가되는 값들은 조건식을 통과시키고, false로 평가되는 값들은 조건문을 건너뛰게 만듭니다.

true로 평가되는 값

  • {} — 빈 객체도 true로 평가됩니다.
  • [] — 빈 배열도 true로 평가됩니다.
  • !false — NOT 연산자가 적용된 false는 true가 됩니다.

false로 평가되는 값(Falsy 값)

  • 0 — 숫자 0은 false로 평가됩니다.
  • undefined — 정의되지 않은 값은 false로 평가됩니다.
  • null — null 값은 항상 false로 평가됩니다.

이러한 Truthy/Falsy 개념은 조건문 작성 시 매우 중요하므로, 어떤 값이 true 또는 false로 평가되는지 정확히 이해하고 있어야 버그 없는 코드를 작성할 수 있습니다.