为什么我定义的这个变量在this.setData里使用?
发布于 5 年前 作者 fqiao 7952 次浏览 来自 官方Issues
8 回复

this.myViews = res.data

作用域问题

它是个私有变量

这边有个浅见,你这个问题本来就不成立,上面读取文件回调里定义的myViews,本来就不能在外面使用,你下面setData肯定报错,是不能使用的。因为var是在当前作用域下声明一个变量,即使用了箭头函数,改变的只是执行上下文,也就是this的指向。如果是一般网页中,试下不在函数体内声明,直接myViews = XXX,会变成全局变量,外面也能用,而且和是否箭头函数无关,你可以试试。但是在小程序内,变量不声明是不被允许的,一下就报错了。记住函数体内声明的变量只在函数体内使用。

然后你使用了箭头函数,this指向了当前上下文,你这里应该是当前页面实例,回调里赋值应该为this.myviews,外面setData也使用this.myviews。

当然这个也是会错的,上面那个是异步的回调,下面当然就拿不到。。所以,你为什么不直接在回调里setData呢?

把变量定义放到 文件最上面

应该是箭头函数的作用域和this.setData的作用域相同

楼主可以查查箭头函数的作用域问题,可以理解为箭头函数的作用域和this.setData是相同的,个人猜测,可以深究一下。

请百度 js 作用域

回到顶部