传递参数:Objective javascript
passing parameter : Objective javascript
我是Objective javascript的新手,尽管我在javascript方面有丰富的经验。如何将我的参数传递到这里的calc闭包?
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(calc.multiply(10,20));
提前谢谢。。
根据您的调用方法calc.multiply(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() {
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
,它返回一个对象来计算具有两个数字的东西,也可以将calc
设置为具有计算东西的函数的对象。您的需求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;
}
};
}
下面的代码应该适用于您:
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
函数使其与零的比较更安全。
希望这能有所帮助。
相关文章:
- 使用Objective-C的JavaScript注入方法
- 在调用Objective-C函数时将值返回到JavaScript
- 如何从Objective-C代码中调用javascript代码
- 传递参数:Objective javascript
- 将变量从 JavaScript 传递到 Objective-C - JSON
- 没有调用javascript中的Objective-C方法
- 如何将swift对象传递给javascript(UIWebView/objective-C)
- 在 Objective-C 中侦听来自 UIWebView Javascript 的通知
- 在 objective-c 中是否有类似的 JavaScript 应用方法
- objective-c的参数[self]是否与JavaScript的原型相关
- 使用 Objective-c 捕获 JavaScript 异步调用
- 在 Objective-C 中接收来自 JavaScript WebView 的消息
- 如何使用 Objective-C 解析需要 JavaScript 的 HTML
- JavaScript和Objective-c(IOS)之间的通信
- 使用 NSString 变量在 PhoneGap 中从 Objective C 编写 JavaScript
- 从 JavaScript 函数返回数组到 Objective-C Xcode
- 如何从 JavaScript 调用 Objective-c 函数
- 我怎样才能从JavaScript调用Objective-C方法
- RegExp 适用于 perl、javascript 和 objective-c,但不适用于 java
- 在 objective-c 项目中从 javascript 读/写文本文件