舉例來講,你能夠這樣作:函數
function say(word){ console.log(word); } function execute(someFunction, value){ someFunction(value); } execute(say,"Hello");
請仔細閱讀這段代碼!在這裏,咱們把 say 函數做爲execute函數的第一個變量進行了傳遞。這裏返回的不是say 的返回值,而是 say 自己!spa
這樣一來, say 就變成了execute 中的本地變量 someFunction ,execute能夠經過調用 someFunction() (帶括號的形式)來使用 say 函數。ip
固然,由於 say 有一個變量, execute 在調用 someFunction 時能夠傳遞這樣一個變量。io
咱們能夠,就像剛纔那樣,用它的名字把一個函數做爲變量傳遞。可是咱們不必定要繞這個「先定義,再傳遞」的圈子,咱們能夠直接在另外一個函數的括號中定義和傳遞這個函數:console
function execute(someFunction, value){ someFunction(value); } execute(function(word){ console.log(word)},"Hello");
咱們在 execute 接受第一個參數的地方直接定義了咱們準備傳遞給 execute 的函數。function
用這種方式,咱們甚至不用給這個函數起名字,這也是爲何它被叫作 匿名函數 。匿名函數
這是咱們和我所認爲的「進階」JavaScript的第一次親密接觸,不過咱們仍是得按部就班。如今,咱們先接受這一點:在JavaScript中,一個 函數能夠做爲另外一個函數接收一個參數。咱們能夠先定義一個函數,而後傳遞,也能夠在傳遞參數的地方直接定義函數。變量