Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数(){}和新函数(){}之间的差异_Javascript - Fatal编程技术网

Javascript 函数(){}和新函数(){}之间的差异

Javascript 函数(){}和新函数(){}之间的差异,javascript,Javascript,在这个问题上,我不想问“函数”,我想问“函数”之谜 var测试=函数(){ 警报(“a”); }; var test1=新函数(){ 警报(“b”); }; 为什么会弹出“b”?新函数将执行该函数,您也可以使用IIFE(立即调用的函数表达式): 功能(p1、p2、…、pn、主体) 当使用一些参数p1、p2、…、pn、body(其中n可能是0,也就是说,没有“p”参数,其中body也可能不提供)调用函数时,将采取以下步骤: 创建并返回一个新函数对象,就像标准内置构造函数在具有相同参数的新表达式

在这个问题上,我不想问“函数”,我想问“函数”之谜


var测试=函数(){
警报(“a”);
};
var test1=新函数(){
警报(“b”);
};

为什么会弹出“b”?

新函数将执行该函数,您也可以使用IIFE(立即调用的函数表达式):

功能(p1、p2、…、pn、主体)

当使用一些参数p1、p2、…、pn、body(其中n可能是0,也就是说,没有“p”参数,其中body也可能不提供)调用函数时,将采取以下步骤:

创建并返回一个新函数对象,就像标准内置构造函数在具有相同参数的新表达式中使用一样


检查:

新的
用于Javascript中的工厂模式。
它通过执行构造函数创建并返回一个对象。在您的情况下,如果您不传递任何参数,那么使用
new

函数是没有意义的,这些函数是为用作构造函数而构建的,不需要参数:

var Person = function () { this.is_alive = true; },
    bob = new Person;

bob.is_alive;
…但是任何函数都可以作为构造函数调用,无论您是否使用返回的对象

new function () { console.log("Bob"); }
这不会将函数保存到任何地方——它会立即在适当的位置运行它。

有关新关键字的基本描述,请参阅

本质上,您是在调用新对象的构造函数。让我给你看看

var Animal = function(name) {
    alert("Animal Created: " + name);
}

jaguar = new Animal("Cool");
与此唯一不同的是在定义新对象的同一行中声明函数:

jaguar = new function(name) {
    alert("Animal Created: " + name);
}
这就是为什么要打印“b”的原因。

请参见
var Animal = function(name) {
    alert("Animal Created: " + name);
}

jaguar = new Animal("Cool");
jaguar = new function(name) {
    alert("Animal Created: " + name);
}