返回
认识作用域、作用域链、闭包、立即执行函数和匿名函数
前端
2023-10-22 04:37:05
认识作用域
作用域是指变量和函数的访问区域,分为全局作用域和函数作用域。在 ES6 中,添加了 let
后,有了块级作用域的概念。
全局作用域
全局作用域是指在任何地方都可以访问的变量和函数,通常在脚本文件的顶部定义。
函数作用域
函数作用域是指在函数内部可以访问的变量和函数。
块级作用域
块级作用域是指在 {}
块中定义的变量和函数,只能在该块内访问。
认识作用域链
作用域链是指一个变量或函数在当前作用域中找不到时,会沿着作用域链向上查找,直到找到该变量或函数为止。
认识闭包
闭包是指可以访问其他函数作用域中变量的函数。
认识立即执行函数
立即执行函数是指在函数定义后立即调用的函数,通常用 ()
或 () => {}
的形式表示。
认识匿名函数
匿名函数是指没有名字的函数,通常用 function () {}
或 () => {}
的形式表示。
总结
作用域、作用域链、闭包、立即执行函数和匿名函数都是 JavaScript 中非常重要的概念,理解这些概念对于编写高质量的 JavaScript 代码非常有帮助。
实例
// 全局变量
var globalVariable = "I am a global variable";
// 函数作用域变量
function myFunction() {
var localVariable = "I am a local variable";
console.log(globalVariable); // "I am a global variable"
console.log(localVariable); // "I am a local variable"
}
// 块级作用域变量
if (true) {
let blockVariable = "I am a block variable";
console.log(blockVariable); // "I am a block variable"
}
// 闭包
function outerFunction() {
var outerVariable = "I am an outer variable";
function innerFunction() {
console.log(outerVariable); // "I am an outer variable"
}
return innerFunction;
}
var innerFunction = outerFunction();
innerFunction(); // "I am an outer variable"
// 立即执行函数
(function () {
console.log("I am an immediately executed function");
})(); // "I am an immediately executed function"
// 匿名函数
var anonymousFunction = function () {
console.log("I am an anonymous function");
};
anonymousFunction(); // "I am an anonymous function"