我正在准备作为JS开发人员进行面试,我碰到了这个闭包定义:
闭包是在另一个函数(称为父函数)中定义的函数,并且可以访问在父函数作用域中声明和定义的变量。 / p>
让我们考虑两个不同的代码:
function a() {
const temp = 1;
function b() {
console.log(temp);
}
}
因此,函数b
显然是一个闭包,因为它是在函数a
中声明的,并且可以访问其变量temp
。
但是,如果我在没有IIFE的情况下声明一个函数,那该怎么办呢?
function c() {
alert("Hi") // a function taken from the global scope
}
我的c
函数未在任何函数内声明,但它可以访问全局范围。它可以被称为闭包,还是应该在另一个被调用的函数中明确声明?
答案 0 :(得分:3)
可以称为闭包
是的,虽然我会说它会创建一个闭包(对于外部执行上下文中的变量)而不是“是”闭包。
或者应该在另一个被称为一个
的函数中明确声明
没有