闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁!
闭包的特点:
1. 作为一个函数变量的一个引用,当函数返回时,其处于激活状态。
2. 一个闭包就是当一个函数返回时,一个没有释放资源的栈区
<template>
<div>
</div>
</template>
<script>
import { ref } from 'vue'
export default {
setup() {
//返回值 最常用的
function fn() {
var name = "fn输出"; //内部定义变量
return function () { //返回函数的结果
return name;
}
}
var fnc = fn(); //赋值 fnc = fn
console.log(fnc())//fnc 输出 fn输出
// ------------------------------
var fn2; //定义变量
function fn3() {
var name = "fn3输出"; //内部定义变量
//将函数赋值给fn2
fn2 = function () {
return name;
}
}
fn3()//要先执行进行赋值,
console.log(fn2())//执行输出fn2 fn3输出
// ------------------------------------
// 每秒执行1次,分别输出1-10
for (var i = 1; i <= 10; i++) {
(function (index) {
//index来接收
setTimeout(function () {
console.log(index); //输出是数字
}, 1000);
})(i)//i作为实参传入 i是输出的次数
// console.log(i,'ll')
}
function fun1() {
var n = 0;
function fun2() {
n++;
return n
}
return fun2;
}
let res = fun1();
for (let i = 0; i < 10; i++) {
console.log(res());
}
// ------------------------------------
return {
fn,
fn3,
fun1
}
}
}
</script>
<style></style>
(31条消息) 理解js闭包10大使用场景,大厂面试官好自为之!_闭包的应用场景_编程界小明哥的博客-CSDN博客https://blog.csdn.net/dkm123456/article/details/111644638
(31条消息) 闭包、闭包应用场景_闭包的应用场景_TANGYC_的博客-CSDN博客https://blog.csdn.net/weixin_45463061/article/details/126615351