[沫沫金]JS匿名函數this調用變量報錯

背景

今天使用Dcloud掃碼功能,success成功方法設置data中的scanContext變量,報「undefined」!javascript

思路

1、懷疑是掃碼內容不是JSON對象,沒法點屬性報錯。排除,使用JSON.parse轉換成功後,依然報「undefined」。
2、怎麼就「undefined」呢,百思不得其解。繼續想辦法java

解決

忽然,看到附件選擇的方法,人家是設置的this.fileUrl成功的。比對下,什麼區別。發現定義的匿名方法,寫法不一樣。個人是function(res),人家的是(res) =>箭頭。考下去試試,ide

成功了!!!函數

緣由

這就是JS中匿名方法的this指向問題,function的聲明方式,this指向的是自己,父級的變量都沒法訪問。請閱讀下面的源碼,運行會報錯嗎?this

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

擴展

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

以上,是關於JS匿名函數this的指向問題。踩過的坑,一塊兒歡呼。對象

相關文章
相關標籤/搜索