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

Create at 2015 02 092 min read技术JavaScript


JavaScript中的两种函数定义方式:

函数表达式:

var foo = function(){
	conlose.log('Message');
};

函数声明:

function foo(){
	console.log('Message');
};

两种方法都可以定义一个相同的函数,但是却有一些区别:

函数表达式中:

var foo和一般的var定义的变量一样被提到了函数或脚本顶部,但是函数体却还是在原来的地方。所以必须在函数体后调用函数。

var foo = function(){
	console.log('Message');
};
foo() 	// 输出结果为'Message'

foo();
var foo = function(){
	console.log('Message');
};		// 会报错TypeError: Property 'test' of object #<Object> is not a function

上面的第二段代码其实和下面的是一样,所以会报错

var foo;
foo();
var foo = function(){
	console.log('Message');
};

函数声明中:

foo()函数的整个函数块都被提到了整个函数或脚本的顶部,在整个函数或脚本中都是可见的。也就是说可以在函数定义之前调用函数。

foo()
function foo(){
	console.log('Message')
}			//输出结果为'Message'

以后在实际使用中,要特别注意两者的区别。

本文章遵循: CC BY-NC-ND 4.0Creative CommonsAttributionNonCommercialNoDerivatives

非商业转载请注明作者及出处,商业转载请联系 作者本人

本文标题为:js函数表达式和函数声明的区别

本文链接为:https://blog.kisnows.com/2015/02/09/jsFunction-expression-declaration