我正在通过 AJAX 加载脚本文件,并运行其内容,我这样做:
new Function('someargument',xhr.responseText)(somevalue);
然而,根据 MDN 的说法:
Function
使用创建的对象Function
构造函数在创建函数时被解析。这比声明函数并在代码中调用它的效率要低,因为使用函数语句声明的函数将与其余代码一起进行解析。
我实在不太明白。如果声明了一个函数,它仍然需要从文件的字符串格式进行解析,那么为什么要通过运行加载的字符串new Function
效率会低吗?
这对我来说确实是一个比较好奇的事情。我可以理解为什么它在循环中会很糟糕(必须重新解析相同的字符串),但是对于这样的事情我认为没有任何问题,是吗?
我认为他们的意思是,如果您在代码中使用函数构造函数,如下所示:
new Function('bar', 'console.log(bar);'));
函数体被解析两次:第一次是在加载代码时作为字符串,第二次是在运行时构造函数时。就您而言,您是在解析代码后从 ajax 响应创建函数的,所以实际上这是一个完全不同的交易。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)