我正在为一份JavaScript开发工程师的面试做准备,我遇到了这个闭包的定义:
闭包是一个在另一个函数(称为父函数)中定义的函数,并且可以访问在父函数作用域中声明和定义的变量。
我们来看两段不同的代码:
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
函数没有在任何函数内声明,但它可以访问全局范围。它可以被称为闭包吗?还是必须特别在另一个函数内声明才能被称为闭包?