第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

教你chrome瀏覽器斷點(diǎn)調(diào)試?yán)斫忾]包

標(biāo)簽:
Html5

首先呢,我们必须搞清楚闭包这个概念:闭包其实是一个特殊的对象,他由两部分组成,一个是执行上下文(代号A),以及在该执行上下文中创建的函数(代号B),当B执行时,如果访问了A中变量对象的变量,那么闭包就产生了。
今天我们就用chrome浏览器带你断点调试理解闭包,好了直接上代码吧
下面这段代码呢?非常简单,在平时实践当中,我们很容易看到,也知道他会产生闭包,但是到底为什么呢?
// 下面这个例子会产生闭包

function add(x) {
	return function _add(y){
		return x+y
	}
}

var sum = add(2)(3)
console.log(sum)

上面这个例子毫无疑问打印出来肯定是 5
那么我们来使用chrome浏览器单步调试一下
在这里插入图片描述
看到右边的单步调试了?当内部函数_add被调用执行时,访问了add函数变量对象中的x,这个时候,闭包就会产生了,这里一定要记住,函数参数变量传递给函数之后也会加到变量对象中
图上一直点击的那个上箭头表示单步调试,而左边的蓝色箭头便是断点的提示,右边的 CallStack表示当前函数调用栈,Scope表示当前作用域,Local表示当前活动对象,Closure表示闭包(在这里闭包是add函数)。

我们再来看一个例子:也是我们日常工作中会经常看到的

var name = "window"
	var p = {
		name: 'Ken',
		getName:function() {
			return function() {
				return this.name;
			}
		}
	}
	var getName = p.getName()
	var _name = getName.call(p)
	console.log(_name)

你说上面这个例子会不会产生闭包呢?在这里我们留下一个悬念,留给读者去思考,接下来我们来看看第三个例子吧,也是很常见的哦

var name = "window"
	var p = {
		name: 'Ken',
		getName:function() {
			var self = this;
			// 内部函数对变量 this 的引用
			return function() {
				return self.name;
			}
		}
	}
	var getName = p.getName()
	var _name = getName()
	console.log(_name)

同样我们也使用Chrome浏览器调试一番。
在这里插入图片描述
看到没有,上面这个例子是会产生闭包的,为什么呢?在一开始就讲过了,闭包其实是一个特殊的对象,他由两部分组成,一个是执行上下文(代号A),以及在该执行上下文中创建的函数(代号B),当B执行时,如果访问了A中变量对象的变量,那么闭包就产生了。
在这个例子中呢,getName()方法中定义了 var self = this, 然后return function (){return self.name},这里面的 self.name 中引用了 外部函数的 self 所以当函数调用时闭包肯定会产生,不信,你可以使用Chrome浏览器调试一番,好了今天就讲到这里吧

點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消