goods: function(code,id, success, fail){
({
normal: function(code,id, success, fail){
wx.request({
url: app.globalData.interface_url
data: {
code:code,
id :id
},
header: {
'content-type': 'application/json'
},
success: function (res) {
success(res);
},
fail: function(e){
console.log(e);
fail(e);
}
})
},
test: function(code, id, success, fail){
success({
data: {
result: 0,
content: {
address: '海淀东路云海路交叉口东100米',
}
}
});
}
}[app.mode || 'normal'])(code, id, success, fail);
请问函数的这样调用方式是什么意思呢?
写这样的代码,是怕后面同事工作太轻松。
//如何执行一个方法
// 第一步:定义
function
foo(){
// dosomething...
}
// 第二步:执行
foo();
// 等价于
(function foo(){
// dosomething...
})();
问题里的代码这样拆分
const goods = (
function
(){
{ a:
'a'
, b:
'b'
}[
'a'
] ;
})();
要给 goods 赋值,先执行右边,发现左边是 (function(){})() 那么就执行里面的 function;
function 里面是 { a:'a', b:'b'}['a'] ,那么就找到 Key 名为 a 的属性。
他那个同事应该是想做个控制测试数据还是真实数据,只是设计太烂了。
这么写,感觉技巧是高了,但是可读性差了啊,当然了我水平也不咋地
写得这么鬼复杂干个锤子。
function函数({对象}[对象的下标])(立刻执行函数)
就是good函数里面的是调用的是根据app.mode || 'normal来判断调用normal,或者test函数,然后外面那个()是js的立刻执行函数的意思,code, id, success, fail就是函数执行要传递的参数。
立刻执行函数就是
(function(str){
console.log(str);
})('立刻打印');
函数会立刻执行,不用定义了再执行。
🤦♀️ 请教大佬,不知道控制测试数据和真实数据 的设计有没有比这个更简洁方便的? 写两个函数是不是都比这个强(ノへ ̄、)捂脸
emmm~~~我是把测试数据单独成文件,开启测试模式的时候从测试文件中读,,,上传之前把测试数据文件删掉就好了。感觉你这样要删测试数据的话要每个函数找喔,很烦喔。
确实有点烦哎,我又不是大神那种一统江湖的气概,只能边学边改了,不过测试文件应该不用删吧,上传的时候模式改下是不是也OK
ok,只是我会嫌他占大小。
哈哈哈.png,IIFE了解一下。
要得要得
笑哭.png
尴尬.png