JavaScript函数声明与函数表达式
怎样定义一个函数
在JavaScript里有两种定义函数的要领
函数声明
function 函数称号 (参数:可选){ 函数体 }函数表达式
function 函数称号(可选)(参数:可选){ 函数体 }
罕见的函数定义以及所属的定义要领
function foo(){} 函数声明
var bar = function foo(){}; 函数表达式
new function bar(){}; 函数表达式
function foo(){ function bar(){} 函数声明}
(function(){})() 函数表达式
+function(){}() 函数表达式
!function(){}() 函数表达式
;(function(){})() 函数表达式,分号横竖前面没加分号,剖析毛病
函数声明与函数表达式的一些纤细的差别
在JavaScript里函数声明会有一个hoist的历程,也就是说在函数实行的之前,函数体就已被剖析了。一个典范的例子
if (true) {
function foo() {
return 'first';
}
}
else {
function foo() {
return 'second';
}
}
foo();
一般情况下,获得的效果是 second
而
var foo;
if (true) {
foo = function() {
return 'first';
};
}
else {
foo = function() {
return 'second';
};
}
foo();
我们能获得想要的效果