码迷,mamicode.com
首页 > 编程语言 > 详细

javascript函数声明和函数表达式的区别

时间:2016-02-16 13:11:21      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:

定义一个函数,可以有好几种方法,其中最常用的就是函数声明和函数表达式,虽然都可以实现定义函数,但他们之间是有区别的。

1.例如:

1.1 函数声明

function log () {
console.log.apply(console, arguments);
}

log 是函数名,指向它声明的函数对象。

1.2 函数表达式

var log = function () {
      console.log.apply(console, arguments);
};

log 也指向它声明的函数对象, 不过是作为一个变量。

1.3 从后续的调用上来说,他们都能实现同样的效果,没什么差别。但也许你一不小心在函数定义之前调用了,区别就来了。

1.3.1 在函数定义之后调用,效果一样。

function log () {
      console.log.apply(console, arguments);
}

var log2 = function () {
      console.log.apply(console, arguments);
};

log(1);
log2(2);

1.3.2 在函数定义之前调用,log2调用报错。

log(1);
log2(2);

function log () {
      console.log.apply(console, arguments);
}

var log2 = function () {
      console.log.apply(console, arguments);
};

 

1.3.3 原因是解析器对这两种定义读取的顺序不同,解析器会事先读取函数声明,并在执行后续的代码之前使之可以使用;而对于函数表达式,解析器只有在读到函数表达式所在那行的时候才执行,简单点,就类似:

var a = b;
var b=0;
console.log(a);

这时log出来的a是undefined,在赋值a的时候,解析器并没有读到b。

 

javascript函数声明和函数表达式的区别

标签:

原文地址:http://www.cnblogs.com/huanglifen/p/5192163.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!