参考文章:

https://blog.csdn.net/qq_44163269/article/details/104627274
https://www.cnblogs.com/zuiyue_jing/p/12235644.html
https://blog.csdn.net/crazytea/article/details/53088759
https://blog.csdn.net/weixin_42805389/article/details/89436585

01 方法和函数的区别

1.1 函数

使用function声明的一段代码块,此时就有了函数fun例如

fun:function(参数){
    //执行代码
}

1.2 匿名函数

没有名字的函数,只能在执行一次(每次调用其相关代码时会执行该函数一次)

function(参数):{
    //执行代码
}

值得注意的是,当匿名函数用于回调函数时,function前面的success,fail,complete等就不再是函数名了。

1.3 箭头函数

箭头函数和普通函数相比,功能大致相同,区别在于:
箭头函数内部的this是整个函数全局的this,不会因对象的调用而改变;而普通函数的this通常会因随着上下文改变,因此普通函数多将this赋值给that使用。
例如:

//上传图片
  uploadImg:function(event){
    var that=this;  //如果想要在下面的success回调函数中使用全局this对象,这里需要进行变量转换。
    //使用箭头函数时,上面一行可以不写
    wx.chooseImage({
      count: 3,
      sizeType: ['original'],
      sourceType: ['album', 'camera'],
//1.
      success (res) {
        const tempFilePaths = res.tempFilePaths;
        that.setData({
          imgPaths:tempFilePaths
        });
      },
//2.
      success :res=> {   //使用箭头函数
        const tempFilePaths = res.tempFilePaths;
        this.setData({
          imgPaths:tempFilePaths
        });
      },

//1.
      fail(err){}
//2.    
      fail:err=>{}
    });
  },

1.4 回调函数

1.5 函数与方法的区别

函数已经在1.1介绍过了,方法就是函数与对象融合了,例如

var obj = {
   name : '张三',
   age : 18
   fun : function(){
       console.log(this.name) //这里的this指向的是obj这个对象
     }//fun就成了该对象的一个方法
 }

或者这样
var abc = function(){
    ......
}

函数和方法本质上是一样的,只不过方法是函数的特例,是将函数值赋给了对象
方法也是函数,只是比较特殊

02 小程序回调函数的理解

个人理解回调就是回头再调用。
定义:A函数作为B函数的参数,B函数执行完之后将返回的结果作为A函数的参数,再执行A函数
理解:手机号作为外卖的参数,外卖到了之后通过,外卖员通过手机号联系我,我再去拿外卖。

function getdata(callback) {
    //这里我们假设是从后端获取数据
    setTimeout(function() {
        //假设我们获取到数据info
        var info = {
            "id": 1,
            "name": '张三'
        }
        //得到数据以后执行函数方法
        callback(info)//这个就是回调函数
    }, 10000)
}
function check(data) {
    if (data.id == 1) {
        console.log('验证成功,可以通过')
    }
}

getdata(check);

上述代码的执行顺序:

  1. 先执行getdata函数,同时传递参数check。但check函数是回调函数,需要在getdata函数执行完毕后再执行
  2. getdata中有一个匿名函数setTimeout,该函数执行完毕后会得到想要的数据info
  3. 此时,getdata函数执行完毕,可以执行回调函数check。
  4. 即将得到的数据info作为参数传递给check函数