이때까지 부트캠프 하면서 아 이건 자신있어! 하는 부분이었는데 오늘 보니까 아니었다...
뭔가 다시 복습할 수 있는 차원에서 하는거라 좋았다.
자바스크립트..하.. 왜 123-'1'이 122가 나오는 건지 모르겠다.
진짜다...
it("lexical scope와 closure에 대해 다시 확인합니다.", function () {
let age = 27;
let name = "jin";
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 innerF = outerFn(); //innerFn에서 innerF로 바꿔줘도 문제없이 작동했다.
expect(age).to.equal(27);
expect(name).to.equal("jimin");
expect(innerF()).to.equal(178);
});
이 문제는 페어하고도 같이 고민했던 문젠데
expect(innerF()).to.equal(178);
이 부분에서 특히 헷갈렸다.
innerF()
이 결국 outerFn()()
이런식으로 될 거 같다고 생각해서(2번 호출)
outerFn 내의 height
는 178이 될것이고 outerFn이 innerFn을 호출하면서 height를 린턴해줬기 때문에 178이 나온 것이라고 생각했는데 맞는지는 모르겠다..