function withVar() {
function withVar() {
const b = () => a;
var a = 24;
return b;
}
function withLet() {
const b = () => a;
let a = 24;
return b;
}
function changingValue() {
let a = 24;
const b = () => a;
a = 42;
return b;
}
console.log(withVar()()); // ??
console.log(withLet()()); // ??
console.log(changingValue()()); // ??
Kết quả đoạn code sau là:
A. undefined Error 42
B. 24 Error 24
C. 24 24 42
D. undefined Error 24
Hướng dẫn
Chọn C là đáp án đúng
Xem lời giải
Xem lời giải
Closure là khi một inner function có thể ghi nhớ và truy cập đến các thành phần ở scope của outer function, thậm chí outer function đã thực thi xong. Ở trong ba ví dụ trên, thì function b vẫn ghi nhớ và truy cập đến biến a ở bên ngoài scope của nó, mặc dù các outer function đã được thực thi xong.