传递参数:Objective javascript
我对Objective javascript还不熟悉,即使我在javascript方面有丰富的经验。如何在此处将参数传递给calc闭包传递参数:Objective javascript,javascript,Javascript,我对Objective javascript还不熟悉,即使我在javascript方面有丰富的经验。如何在此处将参数传递给calc闭包 var calc = (function() { var a = 5; var b = 0; return { add: function() { return a + b; }, subtract: function() { return a
var calc = (function() {
var a = 5;
var b = 0;
return {
add: function() {
return a + b;
},
subtract: function() {
return a - b;
},
multiply: function() {
return a * b;
},
divide: function() {
if (b != 0) return a / b
else {
alert('division by zero');
return false;
}
}
}
})();
console.log(calc.divide());
我想把参数传递给calc like(calc.multiply(10,20))
提前感谢。根据您的呼叫方法
计算乘法(a,b)
:应该有这样的:
var calc = (function() {
return {
add: function(a, b) {
return a + b;
},
subtract: function(a, b) {
return a - b;
},
multiply: function(a, b) {
return a * b;
},
divide: function(a, b) {
if (b != 0) return a / b
else {
alert('division by zero');
return false;
}
}
}
})();
console.log(calc.divide(20, 2));
var calc = (function() {
var a = 5;
var b = 0;
return {
add: function() {
return a + b;
},
subtract: function() {
return a - b;
},
multiply: function() {
return a * b;
},
divide: function(n, d) {
if (n != 0) return n / d
else {
alert('division by zero');
return false;
}
}
}
})();
alert(calc.divide(3, 4));
这里有一个简单的方法
var calc = function(a,b) {
return {
add: function() {
return a + b;
},
subtract: function() {
return a - b;
},
multiply: function() {
return a * b;
},
divide: function() {
if (b != 0) return a / b
else {
alert('division by zero');
return false;
}
}
}
};
//console.log(calc.divide());
//I want to pass the parameters to calc like (calc.multiply(10,20));
calc(10,20).multiply();
否则,您必须修改每个方法以接受形式参数…您的意思是这样的:
var calc = (function() {
return {
add: function(a, b) {
return a + b;
},
subtract: function(a, b) {
return a - b;
},
multiply: function(a, b) {
return a * b;
},
divide: function(a, b) {
if (b != 0) return a / b
else {
alert('division by zero');
return false;
}
}
}
})();
console.log(calc.divide(20, 2));
var calc = (function() {
var a = 5;
var b = 0;
return {
add: function() {
return a + b;
},
subtract: function() {
return a - b;
},
multiply: function() {
return a * b;
},
divide: function(n, d) {
if (n != 0) return n / d
else {
alert('division by zero');
return false;
}
}
}
})();
alert(calc.divide(3, 4));
下面的代码应该适用于您:
var calc = (function() {
var a = 5;
var b = 0;
return {
add: function(a, b) {
return a + b;
},
subtract: function(a, b) {
return a - b;
},
multiply: function(a, b) {
return a * b;
},
divide: function(a, b) {
if (b !== 0) return a / b;
else {
alert('division by zero');
return false;
}
}
};
})();
console.log(calc.multiply(10, 10));
我所做的编辑是在每个返回的函数上设置a
和b
参数,并通过严格设置divide
函数使您与零的比较更安全
希望这有帮助
var calc = (function() {
return {
add: function(a, b) {
return a + b;
},
subtract: function(a, b) {
return a - b;
},
multiply: function(a, b) {
return a * b;
},
divide: function(a, b) {
if (b != 0) return a / b
else {
alert('division by zero');
return false;
}
}
}
})();
不过我会考虑改变你的警戒值来投掷一个错误。
你可以把参数给<代码> Calc < /Cord>,它返回一个对象,用两个数字来计算某个对象,或者只是让<代码> Calc < /Cord>一个具有计算某物功能的对象。您的要求calc.multiply(10,20)
适用于第二种解决方案:
var calc = {
add: function(a, b) {
return a + b;
},
subtract: function(a, b) {
return a - b;
},
multiply: function(a, b) {
return a * b;
},
divide: function(a, b) {
if (b != 0) return a / b
alert('division by zero');
return false;
}
};
否则,对于使用calc(10,20).multiply()
,它将构建您已经拥有的闭包,但使用参数而不是两个局部常量:
function calc(a, b) {
return {
add: function() {
return a + b;
},
subtract: function() {
return a - b;
},
multiply: function() {
return a * b;
},
divide: function() {
if (b != 0) return a / b
alert('division by zero');
return false;
}
};
}
我可以说:“缩进是一件美妙的事情吗?”我相信标准是在被零除的情况下返回
NaN
。但是,如果您打算进行显式验证,我想警报是可以的。Calc不是Javascript构造函数,而是使用模块模式。不需要大写的函数名或new关键字。作为一个单身汉,它会像现在一样工作。有生活的需要吗?我会说不。