簡體   English   中英

通過變量調用函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM