javascript函数声明和函数表达式的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript函数声明和函数表达式的区别相关的知识,希望对你有一定的参考价值。
定义一个函数,可以有好几种方法,其中最常用的就是函数声明和函数表达式,虽然都可以实现定义函数,但他们之间是有区别的。
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函数声明和函数表达式的区别的主要内容,如果未能解决你的问题,请参考以下文章