Javascript Patterns--读书笔记4 (Functions)

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() {} //declaration
var bar = function() {};//expression
var baz = function baz() {}; //named expression

foo.name;//"foo"
bar.name;//"" IE将显示为undefined
baz.name;//"baz"

Callback Pattern

funcitons是object,所以我们可以像传一个参数那样的把一个object传给另一个函数.

如果我们需要定义函数的执行环境,我们可以用apply, this

Immediate function Pattern

 用它的一个好处是可以不污染global环境,因为我们在其中定义的都是local变量.

posted @ 2012-09-17 22:51  moonreplace  阅读(176)  评论(0编辑  收藏  举报