搜索函数名(Javascript)
你好 除了搜索函数名(Javascript),javascript,Javascript,你好 除了arguments.callee.toString().match之外,还有其他方法可以找到函数名吗?例如,创建另一个带有循环的函数来搜索名称 我的所有函数都命名为: function mthdSearch() { console.log("test0") }; function funkA() { console.log("test1"); } function funkB() { console.log("test2"); } 正如我在评论中所说,从
arguments.callee.toString().match
之外,还有其他方法可以找到函数名吗?例如,创建另一个带有循环的函数来搜索名称
我的所有函数都命名为:
function mthdSearch() {
console.log("test0")
};
function funkA() {
console.log("test1");
}
function funkB() {
console.log("test2");
}
正如我在评论中所说,从总体上看,这是不可能的 您可以通过在另一个函数的本地(即在本地作用域内)声明函数,然后尝试在该函数的作用域之外按名称访问声明的函数来构造反例:
(函数(){
函数f(){console.log(“f”)}
var g=函数g(){console.log(“g”);};
h=函数h(){console.log(“h”);};
f();
g();
h();
})();
试试{f();}
catch(e){console.log(e.message);}
试试{g();}
catch(e){console.log(e.message);}
试试{h();}
catch(e){console.log(e.message);}
尝试将它们全部放在一个对象中,并使用您想要实现的具体功能?请注意,arguments.callee
在严格模式下已被弃用和删除:您应该更具体地说明您想要做什么。是否要测试给定名称的函数是否存在?在这种情况下以及存在全局对象的情况下,全局声明的函数可以从全局对象访问。也就是说,函数f(){console.log(“调用'f');}
将可在窗口
对象上访问(窗口.f()
将打印到控制台)。@FK82,我是我们公司的一名新手,我被分配了一项任务,要知道是否可以搜索函数名,比如说在console.log
中编写函数名。我找到了参数。被调用方
,但您必须在每个函数中编写它吗?正如库巴所说,它在严格模式下被弃用。@KirillVorobjov从总体上看,这是不可能的,因为范围太广。这是一个反例:。如您所见,如果您不在匿名函数的范围内,则无法访问名为f
和h
的函数,因此无法访问它们的名称。