我正在尝试在JavaScript中为函数添加一些选项。基本上,我想根据通话选项返回不同的结果。我不知道该怎么做但我认为以下代码可以处理它不能:
ExtractingInputStream

function optional(elem){
opt1: function(){ console.log( elem/15);},
opt2: function(){ console.log( elem/50);}
}
optional(100){opt1}

你能告诉我怎么做吗?
答案 0 :(得分:4)
您可以将对象键映射到您的函数,并将要调用的函数键作为其他参数传递,如
function optional(elem, trigger) {
var obj = {
opt1: function() {
console.log(elem / 15);
},
opt2: function() {
console.log(elem / 50);
}
};
return obj[trigger];
}
optional(100, 'opt1')();
其他方式,你可以以一种非常紧凑的方式实现这一点,就是传递一个具有相应参数的对象,如
function optional(obj) {
//don't forget to validate the object you get
//ex: key exist or not, or the value is int as expected or it's a string and so on
console.log(obj.val / obj.divideBy);
}
optional({
val: 100,
divideBy: 15
});
通过这种方式,您不必声明数百个函数,这些函数可能最终会影响您当前所做的事情。
答案 1 :(得分:0)
function optional(elem, opt){
{
opt1: function(){ console.log( elem/15);},
opt2: function(){ console.log( elem/50);}
}
return this[optelm, ]
}
哪个elm将是'opt1','opt2'....像字符串一样方法可选,如下所示:
optional(elm, 'opt1');
答案 2 :(得分:0)
你可以:
function optional ( opt ) {
let funcs = {
opt1: function( data ){ console.log( data/15);},
opt2: function( data ){ console.log( data/50);}
}
return funcs [ opt ];
}
optional ( "opt2" ) ( 100 ) // should trace out "2"
“optional(”opt2“)返回该opt名称指示的功能。 然后“(100)”将一个值(在这种情况下为100)输入该函数并执行它。
答案 3 :(得分:0)
我更喜欢切换案例方法......更少“功能”
function optional(elem, opt) {
switch(opt) {
case 1:
console.log(elem / 15);
break;
case 2:
console.log(elem / 15);
break;
default:
console.log("undefined");
break;
}
}