闭包

闭包

先了解一下js的变量作用域

一、全局变量:作用域为所属的整个程序

var n = 123;
	function f1() {
		console.log(n);
	}
f1(); // 123

二、局部变量:作用域为所属的函数内部

function f2(){
	var a=100
	console.log(a);
}
f2()
注意:

在JavaScript中,函数内部可以使用全局变量,函数外部不可以使用局部变量。

如果要从外部读取局部变量,那就在函数内部,再定义一个函数。

var a = 10 // 全局变量
function f1() { // 全局函数  // 局部作用域
	var b = 20
	function f2() {  // 局部作用域
		var c=30
        console.log(c);  // a=10  b=20  c=30
    }
    f2()
}
f1()

这里来引入闭包的定义

一、闭包

1.定义:闭包就是能够读取其他函数内部变量的函数。由于在Javascript语言中,只有函数内部的子函数才能读取容局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数"。所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。
2.特点:闭包是一个函数,内部函数使用了外部函数的变量

简单来说:一个函数中套一个函数,里面的函数就是闭包

function f1(){
    var a=10
    // f2 函数就叫做闭包
    function f2(){
    	return a
    }
    return f2  // return f2 是为了可以使用f2函数
}
var fn=f1()  // fn=f2
console.log(fn());  // 10

或者可以写成匿名函数

function f1(){
	var a=10
    return function (){
    	return a
    }
}
var fn=f1()  // fn就是上面return返回的函数
console.log(fn());  // 10

案例:

function num(x) {
	return function (y) {
		return x + y
    }
}
ber = num(10)
console.log(ber(20));  //  20+10=30
// num(10)这里10=x,bre是return返回的函数,所有bre(20)是function(y),20=y
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值