闭包 IIFE

a函数和b函数 操作的是同一个变量 num

function test() {
	var num = 100
	function a() {
		num ++
		console.log(num)
	}
	function b() {
		num --
		console.log(num)
	}
	return [a, b]
}
var myArr = test()
myArr[1]()  // 99 
myArr[0]()  // 100  
复制代码

小应用

function eater() {
	var food = ""
	var obj = {
		eat: function () {
			console.log('i am eating ' + food + '  // eat 和 push 方法形成闭包 操作的是同一个 food')
		},
		push: function (myFood) {
			food = myFood
		}
	}
	return obj  // 返回obj, e1保存的是eater()执行的值, e1就可以调用obj里面的方法
}

var e1 = eater()
e1.push('banana')
e1.eat()  // 形成闭包 操作的是同一个 food
复制代码

IIFE

// 立即执行函数的返回值
var result = (function (a, b, c) {
	var d  = a + b * c
	return d
})(1, 2, 3);
console.log(result)

var test = function () {
	console.log(1)
	return '随便返回一个'
}()
console.log(test)


// function mytest2() {
// 	console.log('a + b + c + d')
// }(1)  // 不报错 如果括号里面是不是空 ,如果是就报错
复制代码

转载于:https://juejin.im/post/5b7f820b518825431079d108

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值