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);
}