检查函数是否存在,其名称是否在字符串中?

Dyl*_*lan 36 javascript

动态地在Javascript中创建函数.有时我需要检查某个功能是否已经实际创建.

我将函数的名称作为字符串.如何根据字符串中的给定值检查函数是否存在?

Mat*_*att 65

您可以检查它是否在全局范围内定义;

if (typeof window[strOfFunction] === "function") {
    // celebrate
    //window[strOfFunction](); //To call the function dynamically!
}
Run Code Online (Sandbox Code Playgroud)

  • 当您没有 `window` 对象时不起作用,例如 node.js。 (2认同)

小智 6

你可以使用eval:

if ( eval("typeof stringFunction === 'function'") ){ /*whatever*/ }
Run Code Online (Sandbox Code Playgroud)

  • 绝不能轻易使用"eval".人们需要了解使用它的含义.见[Eval is Evil](http://blogs.msdn.com/b/ericlippert/archive/2003/11/01/53329.aspx)和[Eval不是邪恶,只是被误解](http:// www .nczonline.net /博客/ 2013/06/25/EVAL-心不是邪恶,只是误解的/). (4认同)
  • 您可以将eval()用于许多事情,但如果您没有其他选择,您应该只使用它.能够将一个字符串打到一起并让它进行评估是很方便的.if(eval("typeof stringFunction ==='function'")){/*无论*/}恕我直言应该是eval("answer = typeof stringFunction ==='function'"); 如果(回答){/*无论什么*/}一些有趣的东西正在发生在诸如with,eval,this和一些关于使用"use strict"的布偶理论之类的事情上; 为了帮助改进编码,如果你要使它成为编译语言但是JS不是...... (2认同)