【问题标题】:How to name an anonymous function inside a javascript function based on passed parameters? [duplicate]如何根据传递的参数在javascript函数中命名匿名函数? [复制]
【发布时间】:2022-11-10 04:13:52
【问题描述】:

我想根据传递的参数给出函数内部的匿名函数的名称。例如,如果传递的参数是“nature”,那么我想创建一个具有该名称的匿名函数。

示例代码:

function hello(nature) {
    window.nature /* I want this word "nature" to be taken from the parameter passed by the function */ = function () {
        console.log('succes');
    }
}

【问题讨论】:

  • '如果传递的参数是“自然”':您是在谈论作为参数传递的字符串,还是在谈论姓名参数?
  • “创建一个具有该名称的匿名函数”: 这姓名函数的名称不一定与您分配该函数的全局属性的名称相同。即使不是全局的函数也可以有一个名字......那么你在找哪个?全局变量名,还是设置函数名(myfunction.name)?
  • 我说的是作为参数传递然后放入函数名的字符串。
  • “输入函数名”是什么意思?您的意思是函数的名称变成了那个,或者有一个具有该名称的变量将函数作为值?

标签: javascript function parameter-passing anonymous-function


【解决方案1】:

你可以通过传递一个字符串作为参数来做到这一点。 如果需要,这里如何分配自定义名称和自定义功能。

function hello(name, func) {
  window[name] = func;
}

hello('azerty', () => console.log('hello'));
window.azerty() // output 'hello'

【讨论】:

  • 使用此解决方案,函数的名称不是azerty,而是hello
  • @trincot作者希望将添加到窗口对象的函数名称是可自定义的,我的回答就是这种情况:您希望“azerty”作为名称,然后您可以调用“window.azerty() ”。 “builder”函数被命名为“hello”,因为这是作者提供的问题。
  • 我觉得你理解作者真是太好了——我在上面的 cmets 中一直在问这个问题,但没有得到明确的答案。对我来说,函数的名称是myfunction.name,仅此而已。
【解决方案2】:

这是一个示例,其中变量“nature”的值为“fn”,传递给“fb”的参数被记录到控制台。

function hello(method) {
  window[method] = function (param) {
    console.log(param);
  };
}

hello('fn');
window.fn('success');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    相关资源
    最近更新 更多