javascript的函数定义的区别

      javascript中函数定义通常有两种方法:

      1. 普通的函数定义:

function f1 (){}

  2. 变量式函数定义:

var f2 = function(){}

     还有一种定义方法是new Function,由于这种方法并不常用,这里就不做解释了。

     那这两种定义方法有什么不同呢?难道仅仅只是样子不同而已嘛?当然不是这样,我们来看个具体的例子吧,大家觉得以下代码的执行结果是什么?

if (1 === 1) {
tellAlert();
} else{
function tellAlert(){
alert('hello');
}
}

     执行结果是:会提示“hello”
     那接下来这段代码呢?

if (1 === 1) {
tellAlert();
} else{
var tellAlert = function (){
alert('hello');
}
}

     执行结果是:游览器不会提示“hello”,chrome中的控制台还会报错:

    

    从上例中,我们可以明显看出,两者很大的不同就是执行顺序不同,这是function语句在解析时会发生被提升的情况。也就是说不管function被放置在哪里,它都会被移动到被定义时所在作用域的顶层。这样的后果就是放宽了函数必须先声明后使用的要求。

   《javascript语言精粹》中推荐使用的方法是 var f1 = function()。这样能明确表示f1 是一个包含一个函数值的变量。

     而nodejs的源码中,定义函数的方法是function f1()。

     个人感觉,在控制自己的代码逻辑的基础上,直接用function f1()会更好点,代码会更清楚点。


·

posted @ 2012-02-29 20:02 lengyuhong 阅读(...) 评论(...) 编辑 收藏