스코프 예제
2023. 1. 3. 11:02ㆍ코드스테이츠/예제모음
종합퀴즈
let x = 30; // 전역스코프
function get () {
return x;
//get 함수 내에 별도로 x라는 변수가 선언되지 않았기때문에 전역스코프 x를 반환한다.
}
let result = get(20);
//전달인자 20을 주어도 get함수에는 매개변수가 없기때문에 그냥 전역스코프 x의 값인 30을 반환한다.
let x = 30; // 전역스코프
function get (x) {
return x; // 여기서 리턴하는 x는 매개변수 x를 의미한다.
}
let result = get(20);
// 매개변수 x가 전달인자 20으로 대체되면서 get함수는 20을 리턴하게된다.
let x = 30; // 전역스코프
function get () { return x; } // get의 x = 30
// get함수에는 선언된 변수 x가 없으므로 전역스코프에 선언된 x를 리턴한다.
function set (value) { let x = value; } // set의 x = 10
// set 함수에서는 매개변수 value가 있어 전달인자를 받아오지만, 함수내에서 새롭게 선언된 x는 get의 x와는 다르다
set(10);
let result = get(20);
//get에 전달인자 20은 아무 의미없으므로 result는 30을 리턴하게 된다.
let x = 30; // 전역스코프
function get () { return x; } // 여기서 x 는 30
// get함수 내에 선언된 x는 없으므로 전역스코프 x의 값을 리턴한다.
function set (value) { x = value; } // 여기서 x는 value값
// set함수내에 선언된 x는 없으므로 전역변수 x의 값을 value의 값인 10으로 할당한다
set(10);
// value의 값은 10이므로 x = 10
let result = get(20);
// 매개변수가 없어서 그냥 x를 반환하므로 result는 10
let x = 30; // 전역스코프
function get (x) { return x; } // 매개변수가 있으므로 x = 매개변수
function set (value) { x = value; } // 매개변수가 있으므로 x = 매개변수
set(10);
// 전달인자 10을 전달해줘서 x = 10
let result = get(20);
// 전달인자 20을 전달해줘서 x = 20
let x = 10; // 전역스코프
function add (y) { // add 함수에 x는 선언되어있지 않으므로 x = 10
return x + y; // 10 + y = 10
}
function strangeAdd (x) { // 매개변수 x가 있으므로 x = 5
return add(x) + add(x); // 10+5 + 10+5 = 30
}
let result = strangeAdd(5); // 30
let x = 10; // 전역스코프
function outer () { // 함수 outer에서는 x를 선언했으므로 x = 20
let x = 20;
function inner () { // 함수 inner에서는 x를 선언하지 않았으므로 전역스코프 x값을 가져옴, x = 10
return x;
}
return inner(); // 10
}
let result = outer(); // 함수 outer의 x 값은 20이므로 20을 반환한다.
let x = 10; // 전역스코프
function outer () { // 함수내 x가 선언됐으므로 x = 20
let x = 20;
function inner () { // 함수내 x가 선언되지않았으므로 x = 10
x = x + 10;
return x; // inner의 x값은 10 + 10 = 20
}
inner(); // 20 반환
}
outer(); // 20반환
let result = x; // 전역스코프의 x값 10 반환
let x = 10; // 전역스코프
function outer () { // 함수내 x가 선언되지 않았으므로 전역스코프 x = 20
x = 20;
function inner () {// 함수내 x가 선언됐기때문에 전역스코프 x 는 가져오지 않는다.
let x
x = x + 20; // x + 20
return x; // 20
}
inner();
}
outer();
let result = x; // 전역스코프 x의 값은 함수 outer에서 20으로 변경되었다.
let x = 10; //전역스코프
function outer () { // 함수내 선언된 변수는 없으니 전역스코프의 x = 20
x = 20;
function inner () { // 함수내 선언된 변수는 없으니 전역스코프의 x = 20 + 20
x = x + 20;
}
inner();
}
outer();
let result = x; // 40
let age = 27; // 26
let name = 'jin'; //jimin
let height = 179;
function outerFn() {
let age = 24;
name = 'jimin';
let height = 178;
function innerFn() {
age = 26;
let name = 'suga';
return height;
}
innerFn();
expect(age).to.equal(26);
expect(name).to.equal('jimin');
return innerFn;
}
const innerFn = outerFn();
expect(age).to.equal(27);
expect(name).to.equal('jimin');
expect(innerFn()).to.equal(178);
});
});
스코프 회고
함수내의 변수가 블록스코프 내에 지역변수로 선언되었는지, 아니면 전역스코프에 선언된 전역변수를 참조해 왔는지를 확인하는게 스코프의 개념을 이해하는데 도움이 된 것 같다.
'코드스테이츠 > 예제모음' 카테고리의 다른 글
Git 설정 및 기본 명령어 (0) | 2023.04.12 |
---|---|
객체분해 예제 (0) | 2023.01.04 |
spread / rest 예제 (0) | 2023.01.03 |