函数表达式和函数声明
var test=function(){} #函数表达式 function test(){} #函数声明
函数调用方式
var test=function(){}
test()
function(){}() //SyntaxError:Unexpected token )
如果是在一条语句后面加上括号,那么该括号只是用来控制优先级的。所以上面的代码相当于声明了一个函数,然后执行()语句,但是()中内容为空,所以报错。
正确方式:
(function test(){}())
函数表达式与函数声明的应用
1.使用函数表达式
if (true) {
var foo = function () {
document.write("1");
}
}
else {
var foo = function () {
document.write("2");
}
}
foo();//1
调整位置后
foo();//undefined
if (true) {
var foo = function(){
document.write( "1" );
}
}
else {
var foo = function(){
document.write( "2" );
}
}
javascript解释器在解释代码时会将变量声明先提升到块级作用域最前端,即
var foo;
foo();//undefined
if (true) {
foo = function () {
document.write("1");
}
}
else {
foo = function () {
document.write("2");
}
}
2.使用函数声明
if (true) {
function foo() {
document.write("1");
}
}
else {
function foo() {
document.write("2");
}
}
foo(); // 2
原来函数声明和变量一样,都有一个提升的过程,而和函数表达式只会提升声明不一样,函数声明即会提升声明,也会提升定义,所以第二个foo的定义把第一个foo给替换掉了,即
function foo() {
document.write("1");
}
function foo() {
document.write("2");
}
网友评论