gpt4 book ai didi

javascript - 接受混合变量的正确术语是什么?

转载 作者:行者123 更新时间:2023-11-29 15:42:07 24 4
gpt4 key购买 nike

我正在尝试查找接受“混合”变量的函数的最佳实践和技术。这类似于 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;
}

最佳答案

我不知道这种模式是否有名称,但我想“通过多态参数的准重载”可能是描述它的一种方式。这不是真正的多态或重载(因此限定符“准”),而更多是 JavaScript 具有动态类型的结果。

我们可能会在这里进入“主观”领域,但我通常不喜欢“混合”参数,因为这会在您处理参数时导致歧义和可能的逻辑炸弹(基本上是一个巨大的笨拙的 switch-caseif-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 - 接受混合变量的正确术语是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17602614/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com