저장을 습관화
자바스크립트 스코프 (scope, 유효 범위) 본문
지역 변수 - 함수 내부에서 선언된 변수
함수 내부에서만 사용 가능하다. 함수 밖에서는 사용할 수 없다.
전역 변수 - 함수 외부에서 선언된 변수
해당 파일 내에서라면 전체에서 사용될 수 있다.
예시 1.
코드
// 전역 변수
let example1;
const minus = (a, b) => {
example1 = a - b;
};
minus(100, 50);
console.log(example1); // 50
// 함수 minus의 정의 이전에, 변수 example1은 선언하였다.
// 함수 minus의 로직에 따라 변수 example1에는 함수 minus의 실행 결과가 저장되었다.
// 함수 minus를 실행하고, 함수 minus의 범위 밖에서 출력하였고, 함수 minus의 실행 결과가 출력되었다.
// 이를 통해 변수 example1은 함수 minus의 안팎에서 모두 사용 가능한 것을 확인할 수 있었다.
// 변수에 익명함수 형태로 함수 정의
const multiply = (a, b) => {
const result = a * b;
return result;
};
const m = multiply(10, 10);
console.log(m); // 100
// 함수 multiply의 실행하고 a*b의 결과인 100을 변수 result에 담아 리턴했으나,
// 함수 실행의 결과는 어디까지나 a*b의 값인 100이지, 변수 result 그 자체가 아니다.
// 지역 변수
const sum = (a, b) => {
const resultSum = a + b;
return resultSum;
};
const s = sum(20, 30);
console.log(s); // 50
console.log(resultSum); // ReferenceError: resultSum is not defined
// 함수 sum의 실행 결과를
// 함수의 범위 밖에서 변수 s에 할당한다고 선언하였다.
// 함수 밖에서 선언한 변수 s는 이상없이 사용이 가능했으나
// 함수 안에서 선언했던 변수 resultSum은 정의되지 않았다는 에러가 발생한다.
실행
$ node test.js
50
100
50
C:(생략)\test.js:26
console.log(resultSum);
^
ReferenceError: resultSum is not defined
at Object.<anonymous> (C:(생략)\test.js:26:13)
at Module._compile (node:internal/modules/cjs/loader:1254:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
at Module.load (node:internal/modules/cjs/loader:1117:32)
at Module._load (node:internal/modules/cjs/loader:958:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:23:47
Node.js v18.16.0
'공부 > JavaScript' 카테고리의 다른 글
자바스크립트 메소드 .repeat() 문자열 반복 (0) | 2023.09.07 |
---|---|
jest - 자바스크립트 테스트 프레임 워크 (0) | 2023.08.08 |
자바스크립트 콜백 함수 (0) | 2023.08.06 |
자바스크립트 .forEach() (0) | 2023.08.06 |
화살표 함수 (0) | 2023.08.06 |