胡子哥哥
1234567891011121314151617181920212223//A:函数声明sum(1,2);// 结果是:3console.log(sum);//输出 result: function sum(a,b){ return a+b; }//这里打印出来的是下面声明的函数function sum(a,b){ return a+b;}(1,2);//函数表达式被前置处理,留下表达式 (1,2) 单独运算 result:2 ---------------------------------------------------------------- //B:函数表达式sum(1,2);//报错 type error:sum is not a function ①console.log(sum);//输出 result: undefined var sum=function(a,b){ return a+b;}(1,2);//可以立即调用 result:3 // 总结: 主要区别,函数声明,会被前置,可以理解为优先运算// 函数表达式可以立即调用 // 补充:// ①:变量声明,也会被前置,所以 B示例中 sum 的值是 undefined // 而不是报 sum is not defined