如果我错了,请纠正我。下面的代码段是一个函数语句:
function foo() {}
其中以下是所有函数表达式。
var foo = function() { } // or
var foo = function foo() { } // or
var foo = new function() { }
我的问题是,这两种形式的函数表达式有什么区别?
var foo = function() { } // and
var foo = new function() { }
第二个也是构造函数表达式吗?如果是,哪个类(我在这里丢失了单词,我知道JavaScript没有类,但是按类,这里,我的意思是模板或函数或原型)
更新
那些提供相关问题链接的人,非常感谢。对此,我真的非常感激。我正在努力学习这种语言,在这一点上,老实说,我的判断是如此新生,以至于我无法判断他们是否都是同一个问题。我知道我读的越多,虽然我发现它非常迷人,但在这个阶段我越是困惑。我可能需要时间来充分理解这种美妙语言的美妙。同时,请继续提及其他相关主题。
答案 0 :(得分:9)
此
var foo = function() { }
实例化一个函数并将foo
赋予该函数的引用。
此
var foo = new function() { }
实例化一个函数,以新对象作为其上下文调用它,并将新创建的对象(或函数的对象返回值)指定为foo
的值。该函数本身被丢弃,除非它通过某种方式设法返回自己。
第二段代码在代码中非常罕见,不是由困惑的人编写的。
答案 1 :(得分:1)
函数表达式将函数定义为更大表达式语法(通常是变量赋值)的一部分。通过函数表达式定义的函数可以命名或匿名。
以下是创建函数并赋值给变量foo
的函数表达式的示例:
var foo = function() { }
var foo = function foo() { }
当你使用new
关键字时,它不会创建一个函数,它只是创建一个对象并将其分配给变量foo
,也会调用实例化的函数。
var foo = new function() { }