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

JavaScript에서 함수 표현식이 항상 상수 값으로 취급되는 이유

JavaScript에서 const 키워드로 선언된 변수는 상수(Constant)입니다. 즉, 한 번 값이 할당되면 프로그램 실행 중에 다른 값을 다시 할당할 수 없습니다. 만약 const 변수에 새로운 값을 재할당하려고 하면 TypeError 오류가 발생합니다.

const 변수와 화살표 함수 예제

다음과 같이 두 수를 곱하는 화살표 함수(arrow function)를 const 변수에 할당해 보겠습니다.

const result = (first, second) => first * second;

여기서 result는 상수이므로, 이 변수에 새로운 함수 표현식을 재할당하려고 시도하면 오류가 발생합니다.

예제 코드

const result = (first, second) => first * second;
result = first => first = first * 10;
console.log(result(10, 20));

프로그램 실행 방법

위의 프로그램을 실행하려면 Node.js 환경에서 다음 명령어를 사용합니다.

node fileName.js

예를 들어 파일 이름이 demo284.js라면 아래와 같이 실행합니다.

node demo284.js

출력 결과

콘솔에는 다음과 같은 오류 메시지가 출력됩니다.

상수 변수에 재할당을 시도했기 때문에 "Assignment to constant variable" 오류가 나타납니다.

PS C:\Users\Amit\javascript-code> node demo284.js
C:\Users\Amit\javascript-code\demo284.js:2
result = first => first = first * 10;
        ^
TypeError: Assignment to constant variable.
    at Object.<anonymous> (C:\Users\Amit\javascript-code\demo284.js:2:8)
    at Module._compile (internal/modules/cjs/loader.js:1133:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1153:10)
    at Module.load (internal/modules/cjs/loader.js:977:32)
    at Function.Module._load (internal/modules/cjs/loader.js:877:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
    at internal/main/run_main_module.js:18:47

오류 해결 방법

재할당을 시도하는 해당 라인을 주석 처리하면 정상적으로 결과를 얻을 수 있습니다.

// result = first => first = first * 10;

정상 출력 결과

주석 처리 후 다시 프로그램을 실행하면 콘솔에 올바른 결과가 출력됩니다.

PS C:\Users\Amit\javascript-code> node demo284.js
200

핵심 정리

const로 선언된 함수 표현식은 그 자체가 하나의 상수 값입니다. 따라서 동일한 이름의 변수에 다른 함수나 값을 재할당하는 것은 허용되지 않으며, 이를 시도하면 TypeError: Assignment to constant variable 오류가 발생합니다. 재할당이 필요한 경우에는 let 키워드를 사용하는 것이 적절합니다.