new Function()()是什么意思?
what does new Function()() mean?
我在一个项目上工作时看到了这段代码,我不确定它到底是做什么的。请有人来教育我吧。谢谢。
var f = new Function('return '+terms)($element);
return f($element);
新的Function()()对我来说就像一个立即调用的函数表达式,如果它是它会从"返回"+术语"表达式返回值,正确吗?那么为什么f在返回语句中作为函数调用呢?
更新:
- terms是一个只包含一个元素'required'的数组,$element是一个HTML元素的jQuery对象
- 代码执行永远不会超过
new Function()
语句,错误消息Uncaught ReferenceError: required没有定义。因此在new Function()()
中调用了required()函数。 - 我以前从未见过
new Function()()
语法。如果是IIFE,不应该写成(new Function(){})()
吗?
是的,你是正确的,这是一个被调用的函数-你可以自己测试它:
var f = new Function("return 'a'")('b');
console.log(f);
'a'
你发布的代码只能工作,如果terms
是一个字符串表示一个函数,这意味着:
var f = new Function("return new Function('return arguments')")();
console.log(f, f(5));
function anonymous() { return arguments } [5]
不用说,这是一种相当奇特的JS编写方式。
关于更新:
实际上,如果terms = ['required']
,它被'return '+terms
转换成字符串,所以你有 new Function("return 'required'")
。因为这是一个返回'required'
的函数,试图将其作为函数调用- required($elem)
将给您提供真正的引用错误。new Function("return required")
。因为这是一个返回required
的函数,它没有定义,它会给你真正的引用错误。
不,这是可以接受的写法。更常见的是(new Function("[function body]"))()
和在没有使用函数对象的情况下创建的函数- (function(){})()
。虽然new Function("[function body]")()
将成功运行,由于new
运算符优先于()
,试图运行function(){}()
将产生错误。
相关文章:
- @@(“at at”)在ES6 JavaScript中是什么意思
- minimy javascript是什么意思?Backbone.js
- var w = q||问2;这个表达式是什么意思
- 什么'它的意思是当一个变量位于括号外时
- 函数(i,val)在javascript中是什么意思
- 问号在这段代码中是什么意思
- 我不知道此代码中的这些符号是什么意思.十进制到二进制
- 什么意思是“;向原型添加方法”;
- ||{}在javascript中是什么意思
- “转义字符串”在Regex中是什么意思?(Javascript)
- 什么是“;传递给NewPromiseCapability的非构造函数值“;意思是
- 什么是“;(''+元素+'')“;意思是
- 这个代码是什么意思(history.replaceState和history.pushstate)
- $(function () { } in javascript/Jquery 中的意思是什么
- [$rootScope:infdig]或[$rootScope:inprog]在angular中的意思是什么?
- “/*@”的意思是什么
- 人们说“字面意思”是什么意思?在JavaScript
- 这两句话的意思是什么?
- 在javascript SRC属性中定义PHP文件的意思是什么?
- 什么'这行在javascript中的意思是什么