JavaScript函数定义语法var fn = function() {} 和 function fn() {}的区别。

在维护和编写代码的时候,经常会遇到如下两种定义函数的方式,不知道这两种函数声明有什么区别?
最新回答
冬瑾凉桉

2024-05-09 01:00:01

区别在于,functionOne的是一条表达式语句,只有程序执行到这行函数才会被定义。然而functionTwo是函数声明,它会在JavaScript一开始就被定义。

如下两个例子可以看出它们的区别。
函数表达式:
// 是个错误的函数调用,functionOne没有被定义。
functionOne();
//程序执行到这里functionOne才会被定义。
var functionOne = function() {
console.log("Hello!");
};

函数声明:

//functionTow会输出: "Hello!"
functionTwo();

function functionTwo() {
console.log("Hello!");
}

通过对上面例子的理解。我们可以推断出,如下的函数声明是不合理的。
if (test) {
//错误或不好的风格
function functionThree() { doSomething(); }
}
这里在if语句中声明了函数,其实它的声明不会管test的值是多少,都会被定义,这样的风格并不好。如果你在use strict下编写上述代码,那么将会报错。秒秒学上有不少函数相关的例子,你可以去看看。