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函数声明和函数表达式的区别的主要内容,如果未能解决你的问题,请参考以下文章

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

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

javascript中函数声明与函数表达式的区别

JavaScript的声明函数和函数表达式

javascript 函数声明和函数表达式

JavaScript的函数声明与函数表达式的区别