能不能帮我捋一捋这段代码的逻辑
var operate = (function () {
var operation = {
add: function(num1, num2) {
return +num1 + +num2;
},
subtract: function(num1, num2) {
return num1 - num2;
},
multiply: function(num1, num2) {
return num1 * num2;
},
divide: function(num1, num2) {
return num1 / num2;
},
addOperation: function (name, fn) {
if (!operation[name]) {
operation[name] = fn;
}
return operation;
}
};
function operate(name, num1, num2) {
if (!operation[name]) throw new Error('不存在名为' + name + '的运算方法!');
return operation[name](num1, num2);
}
function operate(name) {
if (!operation[name]) throw new Error('不存在名为' + name + '的运算方法!');
return operation[name].apply(operation, [].slice.call(arguments, 1, arguments.length));
}
operate.addOperation = operation.addOperation;
return operate;
return function (name, num1, num2) {
if (!operation[name]) throw new Error('不存在名为' + name + '的运算方法!');
return operation[name](num1, num2);
};
正在回答
同学你好,逻辑解答如图:
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
同学你好,同学是不是没有认真听课呢?代码是视频老师一步一步改进着写的,视频老师觉得使用return不合适,所以就换了别的方法,也就是老师第一次回答给同学讲的方法。因为外界要访问operate函数添加方法,所以就需要将其返回出去。在视频的5分40秒左右:https://class.imooc.com/lesson/790#mid=19872
建议同学思考下自己的学习方法哦,听视频老师讲课还是比较直接的,我们只能帮助同学解答部分的疑惑,重要的还是靠自己的。同学这样只会事倍功半呢。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星