参考文章:
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);
上述代码的执行顺序:
- 先执行getdata函数,同时传递参数check。但check函数是回调函数,需要在getdata函数执行完毕后再执行
- getdata中有一个匿名函数setTimeout,该函数执行完毕后会得到想要的数据info
- 此时,getdata函数执行完毕,可以执行回调函数check。
- 即将得到的数据info作为参数传递给check函数