簡體   English   中英

以下代碼是什么意思?我應該如何理解函數體的語法?

[英]What does the following code mean??And how should I understand the syntax of the function body?

createFilter(queryString) {
  return (restaurant) => {
    return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
  };
}

我想知道為什么第一個return之后是另一個return ,並且符號=>意味着什么? 我應該如何理解整個代碼?

=>符號只是聲明函數的另一種方式。 這種類型的功能稱為箭頭功能 (或有時稱為lambda函數)。 例如, (restaurant) => {...}可以重寫為:

function(restaurant) {...}

雖然它與箭頭功能不完全相同,但是它將幫助您了解代碼中正在發生的事情。 要了解箭頭函數和普通函數語法之間的核心區別,您可以閱讀此答案

至於代碼邏輯,如果您單獨查看內部函數,可能會更清楚地了解發生了什么:

(restaurant) => {
  return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
};

這是一個接受restaurant作為參數的函數。 然后,該函數使用restaurant return 一次調用的值。 在這種情況下,返回值是布爾值。

如果要在x上方調用整個函數,則整個代碼應類似於:

createFilter(queryString) {
  return x;
}

在這里,很明顯函數createFilter將接受參數queryString ,並返回x ,我們知道這是一個函數。

因此,如果我要調用createFilter("foo") ,它將給我函數x ,我們說的等效於:

(restaurant) => {
  return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
};

因此,現在,我們知道x是一個函數,我們可以將其稱為x("bar") 我們可以看到上面的函數將返回一個布爾值(因為它正在進行比較),因此調用x("bar")將導致truefalse

因此,充分利用createFilter函數將類似於:

let filter = createFilter("foo"); // returns a function (x), we can store the returned function in a variable called "filter"
let found = filter("bar"); // call the function stored in the variable filter

或者,通過刪除itermidiate變量,可以將其寫為一行:

let found = createFilter("foo")("bar");
// returns a function--^^^        ^^---- executes the returned function    

(restaurant) => { }是一個函數。 更具體地說,它是箭頭功能

歡迎來到SO。 聽起來您有很多JS閱讀要做。 代碼的作用: createFilter返回一個函數( =>是“箭頭函數”),該函數在調用時根據比較是否成立返回truefalse 比較是檢查queryString.toLowerCase()匹配restaurant.value.toLowerCase()的第一個字母(索引為0 indexOf restaurant.value.toLowerCase()

因此,例如,您可以這樣稱呼它:

const myFilter = createFilter('A');
myFilter('Algerian Food'); // true
myFilter('Italian Food'); // false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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