什么'这是接受混合变量的恰当术语
What's the proper term for accepting mixed variables?
我正在努力查找接受"混合"变量的函数的最佳实践和技术。这类似于jQuery对象如何接受字符串、对象和HTML元素,并智能地确定要做什么
但我不确定这种模式叫什么。一个知识渊博的JavaScript开发人员将如何参考这项技术?
例如:
function formatParams(mixed) {
var params = {};
switch (typeof mixed) {
case 'string' :
params = {query: mixed};
break;
case 'number' :
params = {id: mixed};
break;
case 'function' :
params = {callback: mixed}
break;
default:
params = mixed;
}
return params;
}
我不知道这个模式是否有名字,但我想"通过多态参数的准重载"可能是描述它的一种方式。它不是真的多态性或重载(因此限定符"quaid"),而是JavaScript具有动态类型的结果。
我们可能会进入"主观"领域,但我通常不喜欢"混合"参数,因为当你处理参数时,这会导致歧义和可能的逻辑炸弹(基本上是一个巨大而笨拙的switch-case
或if-else
,你试图处理不同的参数组合)。
我更喜欢通过对象文字使用命名参数(或者至少是JavaScript允许的风格):
formatParams({
stringParam: "string",
numberParam: 42,
booleanParam: true,
functionParam: function() {
..
}
});
然后在实际函数中,您可以检查每个单独参数的存在,并确保其类型正确:
function formatParams(options) {
if(typeof options.stringParam !== "undefined" && typeof options.stringParam === "string") {
//do what it is you want
} else {
throw "stringParam is expected to be of type 'string'.";
}
//and so on...
}
我发现这种形式的参数处理不太容易出错,而且更容易执行类型检查,也更容易查看它们是否提供了所需的所有参数。
相关文章:
- 将函数的上下文应用于javascript变量
- 无法导出函数expressjs/requestjs中的变量
- Angular:如何在外部浏览器中打开Angular变量-appgyver混合应用程序
- 在 Yii 中将 registerScript(带有 PHP 变量)与 registerPackage 混合
- 将变量与静态名称混合以创建动态变量
- 将长混合字符串变量从 javascript 传递到 GET url 变量的 url 友好方法是什么?
- 将字符串与数组变量混合在一起,为javascript中的元素分配id
- Javascript变量-选择和混合
- Javascript与C#混合使用-无法使用变量
- 破解JS:关于混合一些对象作为外部函数(如**kwargs)的参数(或内部变量)的想法,不使用它
- 什么'这是接受混合变量的恰当术语
- 如何在javascript中混合变量和循环索引
- 包含硬编码的混合值和来自作用域的变量
- 带有混合变量的字面值字符串
- 在Javascript中混合变量和文本
- 如何在指令中混合和匹配局部变量和导入变量
- 如何混合PHP和Javascript变量,如果有的话
- 在SESSION中传递Javascript变量和PHP变量的混合
- 在javascript变量声明中混合逗号和分号的效果
- 将j/s变量注入到可重用HTML块中而不在j/s文件中混合两者的有效方法是什么