1、声明式函数调用,通过function 函数名(){函数体}直接创建函数
<script>
// fn();//ReferenceError: fn is not defined
// console.log(123)
</script>
<script>
// 在同一个script标签中 声明式的函数可以在任何位置调用,但是赋值式的函数 只能在赋值之后调用
fn();
function fn(){
console.log('fn');
}
fn();
</script>
<script>
fn();
</script>
2、关于赋值式函数调用,通过var关键字 变量名 = function(){函数体}创建
<script>
fn2();
</script>
<script>
// fn2();//TypeError: fn2 is not a function
var fn2 = function () {
console.log('fn2');
}
fn2();
</script>
<script>
fn2();
</script>
总结:声明式的函数可以在任何位置调用,赋值式需要考虑代码执行顺序,因为存在代码与解析问题,赋值式在代码预解析阶段会自动提升到代码的最上方,且优先级比变量提升更高。