[英]Calling a function by variable
我最近開始獨自學習javascript,正在讀一本書,名為“ Eloquent JavaScript”。 以下代碼是本書中的一個示例腳本,使我感到困惑:
function greaterThan(n) {
return function(m) { return m > n; };
}
var greaterThan10 = greaterThan(10);
console.log(greaterThan10(11));
有人可以解釋一下最后兩行的邏輯嗎? greaterThan10
是否包含真值或它是一個函數?
您在倒數第二行定義greaterThan10
:
var greaterThan10 = greaterThan(10);
在這種情況下, greaterThan
函數返回的結果將是greaterThan10
計算結果。
在第2行,我們看到greaterThan
將返回以下函數表達式:
function(m) { return m > n; }
用您傳遞的值替換變量n
,我們得到:
function(m) { return m > 10; }
乍一看可能有些令人困惑,但請記住, 函數是 JavaScript 中的對象 。
greaterThan(n)
是一個函數,該函數返回具有以下定義的匿名函數 :
function(m) { return m > n; }
因此,當我們調用greaterThan(10)
我們希望它返回實際上是函數的對象:
function(m) { return m > 10; }
稍后,我們僅將對象/函數分配給變量,並像調用任何函數一樣對其進行調用。
簡而言之,想象一下我們有:
var greaterThan10 = function(m) { return m > 10; };
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.