箭头函数与普通函数异同,比如:getDataList:()=>{ } , getDtaList(){ } 两种表示方法。

两种函数写法区别(小程序 Page 场景)

1. 写法对比

Page({
  // 写法1:箭头函数赋值
  getDataList: () => {
    console.log(this)
  },

  // 写法2:对象简写普通函数(推荐小程序用)
  getDataList() {
    console.log(this)
  }
})

核心区别:this 指向(最关键)

getDataList: () => {} 箭头函数

箭头函数不绑定自己的 this,会向外层找定义时的 this。
在 Page 顶层写箭头函数,外层作用域不是页面实例,this ≠ 当前页面Page

getDataList: () => {
  console.log(this) // 不是页面,undefined/全局对象
  this.setData()    // 直接报错:setData is not a function
}

致命问题:无法调用 this.setDatathis.getDataList()

getDataList() {} 普通方法(标准对象方法)

普通函数的 this 在调用时自动绑定为当前 Page 页面实例

getDataList() {
  console.log(this) // 当前页面对象
  this.setData({})  // 正常可用
  this.getDataList()// 自身可递归调用
}

2. 作用域与调用场景差异

箭头函数 getDataList: () => {}

  1. 无自己的 thisarguments
  2. 不能用作构造函数;
  3. Page 顶级不要用,会丢失页面 this;
  4. 仅适合写在回调内部(wx.request.success、定时器里)。

普通方法 getDataList() {}

  1. 拥有独立 this,调用时自动绑定页面;
  2. 可以通过 this.方法名() 互相调用;
  3. 小程序 Page、Component 里统一推荐这种写法,不会踩坑。

3. 代码示例直观对比

错误示范(箭头函数丢失this)

Page({
  data: { num: 1 },
  getDataList: () => {
    this.setData({ num: 2 }) // 报错!this不是页面
  }
})

正确示范(普通方法)

Page({
  data: { num: 1 },
  getDataList() {
    this.setData({ num: 2 }) // 正常执行
  }
})

4. 什么时候能用箭头函数?

仅在回调内部使用,用来保留外层页面this:

getDataList() {
  wx.request({
    success: (res) => {
      // 这里箭头函数,保留外层this(页面实例)
      this.setData({ list: res.data.result })
    }
  })
}

总结一句话

  1. Page 页面顶层定义方法:只用 fn() {},别用箭头函数,否则 this 失效;
  2. 接口回调、定时器内部:用箭头函数,锁住页面 this
  3. 你之前报错 Unexpected token 一是少写 =>,二是Page顶层用箭头函数极易连锁报错。
posted @ 2026-07-01 20:29  ham0921  阅读(15)  评论(0)    收藏  举报