·函数声明

·函数表达式

new Function

函数声明与函数表达式的区别

·函数声明必须有名字

·函数声明会函数提升,在预解析阶段就已创建,声明前后都可以调用

·函数表达式类似于变量赋值

·函数表达式可以没有名字,例如匿名函数

·函数表达式没有函数提升,在执行阶段创建,必须在表达式执行之后才可以调用

<script> // 函数声明提升 // fun(); // fn(); // 函数声明 // 必须定义函数名 // function fun() { // console.log(1); // } // 函数表达式 // 是将函数赋值给一个变量,可以是一个匿名函数 // var fn = function () { // console.log(2); // }; // fun(); // fn(); // 提前调用 // 现代浏览器进行的是变量声明提升 // fn(); // console.log(fn); // 低版本浏览器可以进行函数声明提升 // 进行 if 语句中的函数提升 var fn; // if (true) { // function fn() { // console.log(“fn-true”); // } // } else { // function fn() { // console.log(“fn-false”); // } // } if (true) { fn = function () { console.log(“fn-true”); } } else { fn = function () { console.log(“fn-false”); } } fn(); </script>