axios回调函数中的this为何是undifine?

this.$axios.get("./data.json").then(function(result){
      console.log(this) //undefine
    })

关于axios回调函数this指向的问题,网上的大部分文章只是推荐用箭头函数取代普通函数解决,但是却没有解释为什么this会指向undefine,在我的理解里应该是指向window,因为这个匿名回调函数的调用者必然是window对象,但是结果却是undefined,感觉我好不容易建立起的对this指向的认识又崩溃了。。。-。-

阅读 4k
3 个回答

应该是代码是严格模式的 'use strict' 的吧。。。

this.$axios.get("./data.json").then(result => {
      console.log(this) //undefine
    })

这样写,在axios的回调里,this不指向vue了,用箭头函数 () => {}

  1. 自执行函数内部的this指向window
  2. 函数执行的时候,看函数前面有咩有".",有的话,this就是"."前面的实例
  3. 标签绑定事件的时候,this指向当前标签元素
  4. 构造函数里的this指向调用的实例

综上所述:
我觉得你这个this应该是指向window的,为何是undefined,跪等大牛

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题