(1)函数声明 必须有函数名(如foo),它不是一个可执行语句,不可以自调用
function foo(){
//函数体
}
var f = foo; //函数引用
var ff = foo(); //函数调用,可直接调用foo(),也可调用f()
(2)赋值型函数表达式 即通过表达式定义函数,存储在变量里。函数表达式不需要函数名称,通常通过变量名来调用
var f = function foo(str){
//函数体
}
f(a);
var x=f(a);
//分组括号型函数表达式,这是立即执行函数表达式
(function(){
//函数体
})();
(function foo(){})();
举例:function foo(){}() 报错是因为function foo()是函数语句,而不是表达式,不能直接自调用。若(function foo(){})()则可以。
函数可以在声明之前调用,使用表达式定义函数时无法提升。
myFunction(5);
function myFunction(y) {
return y * y;
}