可能重复:
JavaScript: var functionName = function() {} vs function functionName() {}
What is the difference between a function expression vs declaration in Javascript?
我试图了解javascript的“最佳做法”。
此代码来自jqfundementals.com
// create a function that will greet a person,
// and assign the function to the `greet` variable
var greet = function( person, message ) {
var greeting = 'Hello, ' + person + '!';
log( greeting + ' ' + message );
};
greet( 'Jory', 'Welcome to JavaScript' );
greet( 'Rebecca', 'Thanks for joining us' );
为什么要将函数分配给greet变量?
我的第一个冲动就是这样写:
function greet ( person, message ) {
var greeting = 'Hello, ' + person + '!';
log( greeting + ' ' + message );
};
这两种实现有什么区别?
答案 0 :(得分:1)
这些片段之间没有任何差异,除了提升允许您在定义之前调用行中的前一个函数。但这只是一个让你热身的简单例子。实际上,人们不会将这些函数分配给变量,而是将它们直接传递给其他函数。或者他们否则在表达式上下文中使用它们。或者他们动态决定要存储哪个功能。或其他任何事情。
答案 1 :(得分:-2)
没有真正的区别,但是var
表单使您能够在使用之前声明您具有递归函数。
简单示例:
var func1, func2;
func1 = function (count) {
count = count - 2;
if (count > 0) {
func2(count);
}
}
func2 = function (count) {
func1(count + 1);
}
func1(10);
虽然
function func1 (count) {
count = count - 2;
if (count > 0) {
func2(count);
}
}
function func2 (count) {
func1(count + 1);
}
func1(10);
也完全可以接受。由于可变吊装,翻译将用前者替换它。