我有一个带有单个参数的父函数。
我想在几个子函数的命名中使用此参数。
能做到吗?
function A(red) {
function redBall() {
stuff
}
function redHat() {
stuff
}
}
这是我要创建的内容的更具体示例。
我会多次运行此函数,这就是为什么我需要子函数根据提供的参数具有唯一名称的原因。
function name(parameter) {
let parameterThis = '"' + parameter + 'This"';
let parameterThat = '"' + parameter + 'That"';
let $button = '$(".button.' + parameter + '")';
function parameterEnter() {
document.getElementById(parameterThis).style.opacity = "1";
document.getElementById(parameterThat).style.display = "block";
}
function parameterLeave() {
document.getElementById(parameterThis).style.opacity = "0";
document.getElementById(parameterThat).style.display = "none";
}
$button.hover(parameterEnter,parameterLeave);
}
答案 0 :(得分:1)
TLDR:重命名功能并不是您真正想要的。
您无需将函数命名为其他名称即可正常工作。那不是应该编程的方式。相反,请尝试概括要执行的操作,以便可以将其应用于所传递的任何内容。例如,如果需要在某些情况下执行其他操作,请向函数添加另一个参数。或者,如果您需要对每个元素进行独特的操作,请使函数以输入/离开回调函数为参数。即使您以编程方式设置了函数名,也很难以任何方式调用它们,因为您不知道它们的名字。
答案 1 :(得分:0)
您可以执行以下操作:
functionA (boolean condition)
{
if (condition)
fonctionB();
else
fonctionC();
}
functionB()
{
// Stuff
}
functionC()
{
// Stuff
}
如果您打算做的是根据参数实际声明一个函数或另一个函数,那么我认为这是不可能的。但是我真的不明白您为什么要这么做,也许如果您在这件事上更加准确,我们可以为您提供更好的帮助。
答案 2 :(得分:0)
您可以这样尝试,也许比传递参数更简单?
var foo = function() {
this.a = function () {
console.log('A function');
}
this.b = function() {
console.log('B function');
}
return this;
}
然后像这样想要调用函数
foo().a();
编辑:
我误解了您的代码,如果我现在正确理解的话,您想纯粹传递一个字符串,然后立即使用该名称调用函数吗?
好吧,您可以使用eval()
来做到这一点,但是很多人建议不要在这里的任何地方使用它:
function foo(whatFunction) {
function a() {
console.log('a function');
}
function b() {
console.log('b function')
}
eval(whatFunction)();
}
因此,将其称为foo('b')
答案 3 :(得分:0)
从每个人的反应来看,似乎我的实际问题的答案是否定的。 我将不得不继续思考,并找到另一种方式来简化我的代码。