闭包是什么
闭包:定义在一个函数内部的函数
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、闭包是什么
闭包:定义在一个函数内部的函数
二、闭包的作用
1.可以访问父函数的变量
2.可以锁住父函数的变量
闭包的本质
1.父函数的作用域成为永恒作用域
闭包涉及到的作用域问题
1.全局作用域:在全局声明的变量,在任何作用域都有效,是浏览器打开时创建,关闭时销毁
2.局部作用域:在局部声明的变量,在局作用域内有效,变量声明时创建,调用结束后销毁。
1.闭包的第一个作用,访问父函数中的变量
代码如下(示例):
var num = 10
console.log(num);//10
function fn() {
var str = 'abc'
console.log(num);//10,全局
console.log(str);//abc,局部
}
fn()//调用后才能发挥作用
// console.log(str);
function fn_1() {
console.log(num);//10
console.log(str);//拿不到,str未定义
}
fn_1()//调用
2.闭包的第二个作用
代码如下(示例):
var btn = document.getElementById('btn')
// console.log(btn);
btn.onclick = function () {
var count = 0;
return function () {//闭包
count++
btn.innerHTML = `点赞(${count})`//通过点击事件,不断地调用return语句
// 中的函数,并将调用一次累加一次,然后将值赋给btn中的value
// 而其中也体现了闭包的第二个作用,即将父函数中的变量锁住
// console.log(this);
// }()
}
// console.log(this);
}()
可以达到点赞的效果
总结
1.闭包经常搭配多种情况出现问题,具体情况需要具体分析