溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

[沫沫金]JS匿名函數(shù)this調(diào)用變量報(bào)錯(cuò)

發(fā)布時(shí)間:2020-07-02 18:31:32 來源:網(wǎng)絡(luò) 閱讀:323 作者:沫沫金 欄目:web開發(fā)

背景

今天使用Dcloud掃碼功能,success成功方法設(shè)置data中的scanContext變量,報(bào)“undefined”!

思路

一、懷疑是掃碼內(nèi)容不是JSON對象,無法點(diǎn)屬性報(bào)錯(cuò)。排除,使用JSON.parse轉(zhuǎn)換成功后,依然報(bào)“undefined”。
二、怎么就“undefined”呢,百思不得其解。繼續(xù)想辦法

解決

突然,看到附件選擇的方法,人家是設(shè)置的this.fileUrl成功的。比對下,什么區(qū)別。發(fā)現(xiàn)定義的匿名方法,寫法不同。我的是function(res),人家的是(res) =>箭頭。考下去試試,

成功了?。。?/p>

原因

這就是JS中匿名方法的this指向問題,function的聲明方式,this指向的是本身,父級(jí)的變量都無法訪問。請閱讀下面的源碼,運(yùn)行會(huì)報(bào)錯(cuò)嗎?

<script type="text/javascript">
var num = 100;
var thah={
success:function(){
alert(this.num);
}
}
thah.success();
</script>

擴(kuò)展

請熟悉的朋友跟我一起讀:var that = this;//大法好
更時(shí)尚的是箭頭聲明 success:(res)=>{} 更時(shí)尚、更流行、高大上。

以上,是關(guān)于JS匿名函數(shù)this的指向問題。踩過的坑,一起歡呼。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI