2013-10-31 30 views
0

之间有什么区别:命名函数的不同方式?

var name = function() { //stuff to do };

{name : function() { //stuff to do } };

function name() { //stuff to do };

+0

是'javascript'吗? – megawac

+0

http://www.w3schools.com/js/js_functions.asp – Mike

回答

3

正如"JavaScript Patterns"写的斯托扬斯特凡:

在函数的声明和命名的函数表达式中,名字 亲perty被定义。在匿名函数表达式中,它依赖于 的实现;它可能是未定义的(IE)或用 空字符串(火狐,WebKit的)中所定义:调试萤火虫代码或其它 调试器时

function foo() {} // declaration 
var bar = function() {}; // expression 
var baz = function baz() {}; // named expression 

foo.name; // "foo" 
bar.name; // "" 
baz.name; // "baz" 

name属性是有用的。当调试器需要向您显示函数中的错误时,它可以检查是否存在name属性,并将其用作 指示器。 name属性也用于从其自身内部递归地调用相同的函数 。如果你对这两种情况不感兴趣,那么一个未命名的函数表达式将会更简单,并且不会变得冗长。

对函数的声明和喜欢 函数表达式的原因的情况是表达亮点,其功能 就像所有其他对象的对象,而不是一些特殊的语言 结构。

相关问题