抹桥的博客
268 字
1 分钟
js函数表达式和函数声明的区别
2015-02-09

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'

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

js函数表达式和函数声明的区别
https://blog.kisnows.com/2015/02/09/jsfunction-expression-declaration/
作者
Kisnows
发布于
2015-02-09
许可协议
CC BY-NC-ND 4.0