Functions是JavaScript中一非常重要的一部分,主要体现在两方面:一是first-class objects,二是它会提供运行的scope.
named function expression:
var add = function add(a,b){ return a+b;}
anonymous function:
var add = function (a,b) { return a + b;};
这两者完成的功能是一样的,但有什么区别呢:
区别就在于,当我们试图去取function.name的时候,named function expression将会得到add,而anonymous function将不会得到,那么这个name属性有什么用呢?一是对于一些调试工具,如firebug可以准确的报出那个函数的一些信息,二是在自身调用的时候也是非常有用的。
Function's name propety:
name属性尽管不是一个标准属性,但是许多环境都实现了它,对于命名函数,我们可以通过它得到名字,而对于匿名函数,在IE中将会得到undefined,而在FF中将会得到empty string
看如下代码:
function foo() {} //declarationvar bar = function() {};//expressionvar baz = function baz() {}; //named expressionfoo.name;//"foo"bar.name;//"" IE将显示为undefinedbaz.name;//"baz"
Callback Pattern
funcitons是object,所以我们可以像传一个参数那样的把一个object传给另一个函数.
如果我们需要定义函数的执行环境,我们可以用apply, this
Immediate function Pattern
用它的一个好处是可以不污染global环境,因为我们在其中定义的都是local变量.