首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

new Function()和new Function()()之间的区别

new Function()和new Function()()之间的区别在于函数的执行方式和作用域。

  1. new Function()是通过Function构造函数创建一个新的函数对象,但不立即执行该函数。它接受多个参数作为函数的参数,最后一个参数作为函数体。返回的是一个函数对象。

示例代码:

代码语言:txt
复制
var func = new Function('a', 'b', 'return a + b;');
console.log(func(2, 3)); // 输出:5
  1. new Function()()是在创建函数对象的同时立即执行该函数。它接受多个参数作为函数的参数,最后一个参数作为函数体,并立即执行该函数。返回的是函数执行的结果。

示例代码:

代码语言:txt
复制
var result = new Function('a', 'b', 'return a + b;')(2, 3);
console.log(result); // 输出:5

总结:

  • new Function()创建一个函数对象,但不立即执行。
  • new Function()()创建一个函数对象,并立即执行。

需要注意的是,使用Function构造函数创建函数对象存在一些安全风险,因为它可以执行任意的JavaScript代码。在实际开发中,应该尽量避免使用Function构造函数,而是使用函数声明或函数表达式来定义函数。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

js new一个function都发生了什么

这样我们就实现了一个类效果,那么new这个function时候到底都发生了什么呢,为什么fun.name值就是张三呢,如果我们直接调用TestFun.name会发生什么呢,其实这里会直接输出TestFun...说了这么多,new到底发生了什么呢? MDN上是这么说 function Foo(){} var o = new Object(); o....[[Prototype]] = Foo.prototype; Foo.call(o); 上面我们说过了,一个对象内部属性[[Prototype]]proto指向一个值,所以说在new时候我们可以理解为...但是一般情况下如果function没有return时候这是一个正常流程,如果function return了一个Object类型,则new完成以后则会返回这个object,如果是非Object(string...(fun.getAge) 如果是这样的话,那么我们输出namegetAge均为undefined。

1.8K30

jQuery(function(){})与(function(){})(jQuery)区别

三、总结 jQuery(function(){ });用于存放操作DOM对象代码,执行其中代码时DOM对象已存在。...(function(){ })(jQuery);用于存放开发插件代码,执行其中代码时DOM不一定存在,所以直接自动执行DOM操作代码请小心使用。 补充: (function($){...})...这就定义了一个匿名函数,参数为arg 而调用函数时,是在函数后面写上括号实参,由于操作符优先级,函数本身也需要用括号,即: (function(arg){...})...(param) 这就相当于定义了一个参数为arg匿名函数,并且将param作为参数来调用这个匿名函数 而(function($){...})...(jQuery)则是一样,之所以只在形参使用$,是为了不与其他库冲突,所以实参用jQuery ,上述也可以这样写:var fn = function($){....}; fn(jQuery);

833100

你需要深入了解一下 JavaScript new Function

这是否意味着 new Function 语法是一个鸡肋功能? 千万不要这样想! 因为它绝对不是你想那样!...new Function 语法有一个特别强大特性,使它在 JavaScript 中发挥着不可替代作用。 有什么特点?也就是函数体数据格式是字符串,真是不可思议!...不可替代角色 这里有几个例子来展示 new Function 语法微妙之处。...03).闭包上下文 new Function body 参数中变量上下文是全局,不是私有的,没有所谓闭包。...例如,要匹配以动态值开头属性值,可以使用以下用法: let reg = new RegExp('^' + value, 'g'); 总结 以上就是我今天跟你分享关于new Function语法知识

34440

var fn = function(){ }function fn() { }有什么区别

但函数表达式变量表达式只是将函数或者变量声明提升到函数顶部,函数表达式变量初始化不会被提升。 var fn = function(){ } 这种叫做函数表达式,必须先定义后使用。...function fn () { } 这种是函数声明,可以先使用后定义,它会对函数声明进行一个提升。...var fun = function(){     console.log("前端资源网"); } fun(); 以上是没有任何问题,我们把声明使用颠倒位置: fun(); var fun = function...不声明 fun 报错是不一样,其实 fun 也是一个变量,只不过他是 function () { console.log(“前端资源网”);} 一个引用,fun 声明被提升了,但是初始化没有被提升...参考文档: var js=function(){}function js(){}区别 (adsbygoogle = window.adsbygoogle || []).push({

1.9K10

golang newmake区别

Go语言中newmake都是用来内存分配原语(allocation primitives)。简单说,new只分配内存,make用于slice,map,channel初始化。...通过new其返回一个指向新分配类型为int指针,指针值为0xc00004c088,这个指针指向内容值为零(zero value)。 同时,需要注意是不同指针类型零值是不同。...它new还能配合使用 示例 var mv *map[string]string fmt.Printf("mv: %p %#v \n", &mv, mv)//mv: 0xc042004028 (*map...小结: makenew都是golang用来分配内存內建函数,且在堆上分配内存,make 即分配内存,也初始化内存。new只是将内存清零,并没有初始化内存。...make返回还是引用类型本身;而new返回是指向类型指针。 make只能用来分配及初始化类型为slice,map,channel数据;new可以分配任意类型数据。 目录

4.8K20

$(document).on$(#idname).on$(function(){ })区别

$(function(){ })使用   JQuery 代码我们通常会包裹在一个(function(){})函数中,jq (function(){})也就是 $(function () {...DOM 文档加载步骤: 解析 HTML 结构 加载外部脚本样式文件 解析并执行脚本代码 执行 $(function(){}) 内对应代码 加载图片等二进制资源 页面加载完毕,执行 window.onload...$().click()用法一样,最大区别即优点是如果动态创建元素在该选择器选中范围内是能触发回调函数。...$().bind()直接绑定在元素上,click,blur,mouseon一样点击事件。     $().live()是通过冒泡方式来绑定到元素上。...触发事件时,jQuery会按照绑定先后顺序依次执行绑定事件处理函数。   3. 阻止事件冒泡事件委托方法:     A:return false。

2.1K20

c++ newmalloc区别

10点区别  1....operator new  这个operator new不分配任何内存,它只是简单地返回指针实参,然后右new表达式负责在place_address指定地址进行对象初始化工作。 ...2.返回类型安全性  new操作符内存分配成功时,返回是对象类型指针,类型严格与对象匹配,无须进行类型转换,故new是符合类型安全性操作符。...5.是否调用构造函数/析构函数  使用new操作符来分配对象内存时会经历三个步骤:  第一步:调用operator new 函数(对于数组是operator new[])分配一块足够大,原始,未命名内存空间以便存储特定类型对象...标准库是定义了operator new函数operator delete函数8个重载版本:  //这些版本可能抛出异常 void * operator new(size_t); void * operator

89800

Go语言newmake区别

Go语言中newmake都是用来内存分配原语(allocation primitives)。简单说,new只分配内存,make用于slice,map,channel初始化。...通过new其返回一个指向新分配类型为int指针,指针值为0xc00004c088,这个指针指向内容值为零(zero value)。同时,需要注意是不同指针类型零值是不同。...它new还能配合使用示例var mv *map[string]stringfmt.Printf("mv: %p %#v \n", &mv, mv)//mv: 0xc042004028 (*map[string...小结:makenew都是golang用来分配内存內建函数,且在堆上分配内存,make 即分配内存,也初始化内存。new只是将内存清零,并没有初始化内存。...make返回还是引用类型本身;而new返回是指向类型指针。make只能用来分配及初始化类型为slice,map,channel数据;new可以分配任意类型数据。

36020

实例讲解overridenew区别

---- 二、newnew关键字可以在派生类中隐藏基类方法,也就说在使用派生类调用方法是New关键字新定义出来方法,而不是基类方法。...在不使用New关键字来隐藏基类方法也是可以,编译器会出现一个警告,提示如果有意去隐藏基类方法,请使用New关键字修饰。...Virtual关键字override紧密不可分,如果要实现Virtual方法就必须要使用override或new关键字(newoverride产生机理不同)。...= new B(); // 实例化b对象,B是b实例类 c = new C(); // 实例化c对象,C是c实例类 d = new D(); // 实例化d对象,D是d实例类 a.Func...(优先级最后) 4、new时候,虽然继承类中也有同名方法,但是已经与父类那个没有关系。故也不会调用到这个方法。除非是以子类申明对象才能调用到。

866100

Golang中makenew区别

new: func new(Type) *Type 接收一个参数,这个参数是一种类型,而不是一个值,分配好内存后,返回一个指向该类型内存地址指针,这个指针指向内容值为该类型零值。...对于不同数据类型,零值意义是完全不一样。...比如,对于bool类型,零值为false;int零值为0;string零值是空字符串 make: func make(t Type, size ...IntegerType) Type 同样用于内存分配...,但new不同,make用于channel,slicemap分配,而且返回类型就是这三个类型本身,而不是它们指针,因为这三种类型本身就是引用类型,所以就没必要返回他们指针了。...具体而言,有如下几种用法: (1)make(map[string]string):即缺少长度参数,只传类型,这种用法只能用在类型为map或chan场景 (2)make([]int, 2):指定了长度

71730

Object.createnew区别

意思就是生成一个新对象,该新对象_proto_指向现有对象 原理如下图所示: Object.prototype.create = function (proto) { function F() {...} F.prototype = proto; return new F(); }; new new生成是构造函数一个实例,实例继承了构造函数及其prototype上属性方法 原理如下图所示...: var o = new Object(); // 创建一个空对象 Object.setPrototypeOf(o, Foo.prototype); // 绑定原型链 Foo.call(o); 区别...通过上面代码,我们可以得出以下区别: create new 创建函数 创建空对象 无 显示调用父类 代码实现如下: function Foo() { this.name = '123'; } Foo.prototype.sayName...); 结果如下: 两者不同在于,Object.create创建新函数并没有继承构造函数属性方法,只继承了原型方法原型属性

13020

简单说下,(function(){...})() 与 (function(){...}()) 有什么区别

大周末写太长了也没人看,标题所提问,其实没有区别function xxx(){...},这是一个函数,解释器知道了,但并不运行它; xxx(),解释器遇到它就会执行它。...IIFE写法好处: 1,普通写法代码多,并且定义执行不在一起; 2,占用命名空间; 不想给某些函数起名,又想让它立即执行,那怎么办呢?...简单啊,将之转化为表达式,加个()呗,变成这样, (function xxx(){console.log('xxx')})(); 那既然都立即执行了,干脆函数名也不要了吧,于是, (function (...因为IIFE搞了一个新作用域,你代码碰不到全局对象了。 什么是IIFE? 立即执行函数表达式 IIFE(Immediately-invoked function expression)

82860

Java中newInstance()new()区别

两者创建对象方式不同,前者是实用类加载机制,后者则是直接创建一个类: newInstance创建类是这个类必须已经加载过且已经连接(Class.forName(“A”)这个过程),new创建类是则不需要这个类加载过...newInstance 是弱类型(GC是回收对象限制条件很低,容易被回收)、低效率、只能调用无参构造,new是强类型(GC不会自动回收,只有所有的指向对象引用被移除是才会被回收,若对象生命周期已经结束...Class.forName(className);factory = (AInterface)c.newInstance(); 上面代码就消灭了A类名称,优点:无论A类怎么变化,上述代码不变,甚至可以更换A兄弟类...newInstance实际上是把new这个方式分解为两步,即,首先调用class加载方法加载某个类,然后实例化。 这样分步好处是显而易见。...我们可以在调用class静态加载方法forName时获得更好灵活性,提供给了我们降耦手段。 ----

43810
领券