javascript/javascript 심화지식
함수 유효범위 : 전역변수와 지역변수
honey.kikiki
2021. 7. 16. 14:05
728x90
함수 유효범위 : 전역변수와 지역변수
유효범위(Scope)는 변수의 수명을 의미한다. 아래의 예제를 보자. 결과는 global이다.
var vscope = "global"; // 전역변수 global
function fscope() {
var vscope = "local"; // 지역변수 local
// alert(vscope); // 'local' 함수내부위 vscope가 없을떄 "global"
}
let a = "sc";
console.log(a); // sc
function fscope2() {
// alert(vscope); // "global"
var lv = "local variables";
a = "kk";
console.log(a); //kk
}
fscope();
fscope2();
console.log(lv); // error 지역변수는 밖에서 접근할수가 없다
console.log(a); // kk
function a() {
let i = 0;
}
for (let i = 0; i < 5; i++) {
a();
document.write(i); //01234
}
document.write(i); // error
전역변수
let MYAPP = {}; // 전역변수vcv
MYAPP.calculator = {
left: null,
right: null,
};
MYAPP.coordinate = {
left: null,
right: null,
};
MYAPP.calculator.left = 10;
MYAPP.calculator.right = 20;
function sum() {
return MYAPP.calculator.left + MYAPP.calculator.right;
}
document.write(sum()); // 30
// 전역변수를 사용하지않을떄
(function () {
let MYAPP = {}; //지역변수
MYAPP.calculator = {
left: null,
right: null,
};
MYAPP.coordinate = {
left: null,
right: null,
};
MYAPP.calculator.left = 10;
MYAPP.calculator.right = 20;
function sum() {
return MYAPP.calculator.left + MYAPP.calculator.right;
}
document.write(sum());
})(); // 익명함수 방법
유효범위의 대상 (함수)
for (let i = 0; i < 1; i++) {
let name = "coding everybody";
let key = 123;
}
console.log(name);
console.log(key);
정적유호면위(lexical scoping)
let i = 5; // 전역변수
function a() {
let i = 10; // 지역변수
b();
}
function b() {
document.write(i); // 5
}
a();