[沫沫金]JS匿名函数this调用变量报错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[沫沫金]JS匿名函数this调用变量报错相关的知识,希望对你有一定的参考价值。

背景

今天使用Dcloud扫码功能,success成功方法设置data中的scanContext变量,报“undefined”!

思路

一、怀疑是扫码内容不是JSON对象,无法点属性报错。排除,使用JSON.parse转换成功后,依然报“undefined”。
二、怎么就“undefined”呢,百思不得其解。继续想办法

解决

突然,看到附件选择的方法,人家是设置的this.fileUrl成功的。比对下,什么区别。发现定义的匿名方法,写法不同。我的是function(res),人家的是(res) =>箭头。考下去试试,

成功了!!!

原因

这就是JS中匿名方法的this指向问题,function的声明方式,this指向的是本身,父级的变量都无法访问。请阅读下面的源码,运行会报错吗?

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

扩展

请熟悉的朋友跟我一起读:var that = this;//大法好
更时尚的是箭头声明 success:(res)=>{} 更时尚、更流行、高大上。

以上,是关于JS匿名函数this的指向问题。踩过的坑,一起欢呼。

以上是关于[沫沫金]JS匿名函数this调用变量报错的主要内容,如果未能解决你的问题,请参考以下文章

沫沫金原创eclipse卡死,打开js jsp等卡死 电脑尖叫看这里

沫沫金Echarts移动端demo

沫沫金原创提供Web静态页面工程-目录结构(标准)

沫沫金:JQuery批量选择/取消,诡异问题第一次正常,第二次失效

[沫沫金原创]jQuery温度计,支持摄氏度华氏度同时展示

沫沫金实践可用--web工程ORM数据库链接(JDBC)链接集群库||普通库,两种标准