函数有两种声明的方式
一种是直接在全局作用域中声明函数,因为函数是一等公民,所以会提升变量。
fn();//输出为a
function fn() {
console.log('a');
}
第二种是定义好函数后赋值给另外一个变量,这时候,只有变量是提升的,函数还是“留在原地”,所以在写代码之前调用函数会报错,而输出这个变量,则会得到undefined。
console.log(fn);//undefined
fn();//报错,fn不是一个function
var fn = function () {
console.log('a');
};