函數聲明
關於函數聲明的方式,它的一個重要的特性就是函數聲明提升(function declaration hoisting),意思是在執行代碼之前會先讀取函數聲明。這就意味着可以把函數聲明放在調用它的語句后面,如下所示:
1 sayHi(); //在調用語句的后面聲明函數(function declaration hoisting) 2 function sayHi () { 3 console.log("Hello World"); 4 }
函數表達式
有多種表達方式,下面是最常見的一種:
var s = function (agr1, arg2) { console.log(arg1 + ' ' + arg2); }
按照書中所說,函數聲明語句,聲明函數實際是聲明了一個變量f,然后將一個聲明的函數對象賦值給變量f,變量的聲明有提至所有代碼頂部的特點,故函數聲明語句聲明的函數可以在聲明之前調用。
至於為什么同樣是將一個函數賦值給一個變量,函數表達式卻不能提到前面呢?我們來分析下:
var s = function(arg1, arg2) {};
可以拆分為:
var s; s = function (arg1, arg2) {}
其中 var s
被提前聲明了,但 s = xxxx
是要在運行到這里的時候才進行。