js中,定义函数常用的两种方法:函数声明和函数表达式。
函数声明:
function sum(item1,item2){
//代码块
}
函数表达式:
var sum = function(item1,item2){
//代码块
};
函数声明和函数表达式存在的一个最大的区别就是:函数声明会被提升,即js引擎会将函数声明提升到顶部。如下代码:
console.log(sum(1,2));
function sum(item1,item2){
return item1+item2;
}
上述代码结果输出为3,虽然还没有执行到sum函数,但是因为在js中,解析器会先读取函数声明(即函数声明提升),并使其在执行任何代码之前可用。
但是,如下代码会在运行期间产生错误:
console.log(sum(1,2));
var sum = function(item1,item2){
return item1+item2;
}
因为执行到函数所在语句之前,变量sum中不会保存有对函数的引用。
补充:变量声明
同样的,和函数声明提升一样,在js中还存在变量声明提升。
var a = 1;
function printA(){
console.log(a);
var a = "这是函数里的A";
}
printA(); //undefined
因为在函数printA中,存在变量a会被提升到最前面。