在JavaScript中将参数的文本名传递给函数

在JavaScript中将参数的文本名传递给函数,javascript,parameters,Javascript,Parameters,下面是我正在编写的一些代码中的一个例外。有没有办法将参数的文本名传递给函数?例如,我使用display(name);,调用display函数;。函数能否识别其值的名称(即name=Bob)并在第2行中定位文档元素 function display(attribute) { var putItHere = "'show-"+ ~~~TEXT OF PARAMETER SHOULD GO HERE~~ +"'"; document.getElementById(putItHere).

下面是我正在编写的一些代码中的一个例外。有没有办法将参数的文本名传递给函数?例如,我使用display(name);,调用display函数;。函数能否识别其值的名称(即name=Bob)并在第2行中定位文档元素

function display(attribute) {
    var putItHere = "'show-"+ ~~~TEXT OF PARAMETER SHOULD GO HERE~~ +"'";
    document.getElementById(putItHere).innerHTML = attribute;
}
display(name);

我想我被你的问题弄糊涂了,因为答案似乎“太明显了”,我肯定错过了什么

。我还注意到,你对这个问题的陈述似乎前后矛盾。首先,你说“playerHeight”的
键是“
show-
playerHeight”。但是,在下一句中,你说“wingspand”的键是。。。(不是
显示-
翼展”,而是…“翼展”

坦率地说,在这种情况下,我会诚恳地建议,“干燥只是……一个原则。”这是一条经验法则,你永远不会在一个刚刚从山上下来的白发男子携带的石碑上找到它的文字

尽管从某种抽象的学术意义上讲,“携带一个键和它的值”可能不是“严格必要的”,但这样做可能会更加清晰,并且可能会产生更强的(!)和更易于维护的(!!)代码。原因如下:

如果你“太聪明”地试图“避免”携带一个或另一个,那么你必然会将推断“另一个或另一个”的义务强加给该信息的接收者。很快,你的代码中就充满了各种各样的“聪明”代码,可以做到这一点。都是彼此无关的

然后,“市场营销部”打电话来,提出了他们最新的想法(CEO认为这很好)。这个想法打破了你的“聪明”假设

。因此,您的团队四处奔波,更改(单独)所有那些(单独)“推断”过去是正确的,但由于市场营销部门的原因,现在已不再正确的“聪明”代码片段

。不幸的是,你的团队只修复了其中一个

。而且,最不幸的是,你不知道这一点

现在,在某个地方,多亏了你的“聪明”,有些事情正在发生:“滴答滴答……”


因此,我建议“干燥是一个原则”。将其作为经验法则和指南。但是,这并不是以牺牲可维护性或清晰度为代价的。如果你故意(!)写一段代码,告诉许多其他代码“他们已经知道了什么”,那么只有一段代码必须在“市场营销部再次打电话时”进行更改。而这段代码的更改将适用于所有的多个个案,无论在何处(“谁知道呢?”)可能是这样。

无法完成。只传递值和引用,没有关于用于传递所述值/引用的变量名称的信息。您是否同意@mike-c“没有关于变量名称的信息”可以使用?我没有这样的意见。(因此,我既不同意也不反对Mike-C。)我通常认为“冗余是可以的。”如果一个单一的(!)权威来源在说话,你就不会“重复你自己”。因为,即使“他/她今天说的是”冗余和重复,“可能并非总是如此。在我看来,依赖“冗余”可能比自己进行推理更好……因为:你用来进行(!)推理的源代码是……冗余!但它是不可维护的“冗余”。没有“亮线规则”这里。没有什么可以让我们的软件工程为我们做出妥协。只有指导方针和折衷。这就是为什么我们的工作如此艰难,如此有趣的原因。@MikeRobinson我所说的不是观点问题,而是语言的事实。你说的是你应该如何记住DRY是一个原则,因此有时可以是但这不是问题所要问的。“关于语言的事实”是的。但没有“原则”提供了一个明确的答案。就我个人而言,我非常(!)关注什么是可维护的代码,而且,同样是“IMHO”,这与“何时”必须更改多少代码有关业务需求发生变化……因此,有一天一个或多个地方会被忽略的可能性有多大。基本上,OP的问题的答案是:“显然,是的。”(就像我最初说的,“如此明显,我一定错过了一些[明显的]。”),当然,你可以写一些额外的声明来做到这一点。