2016-07-26 125 views
2

我從一個庫中獲得以下代碼,並且我想知道將參數/變量與{}關聯起來,還有一個沒有它們之間有什麼區別?{參數}和參數之間的區別?

行我指的是這個:

send({sessionId}, {text}) 

下面是完整的代碼:

const actions = { 
    send({sessionId}, {text}) { 
    // Our bot has something to say! 
    // Let's retrieve the Facebook user whose session belongs to 
    const recipientId = sessions[sessionId].fbid; 
    if (recipientId) { 
     // Yay, we found our recipient! 
     // Let's forward our bot response to her. 
     // We return a promise to let our bot know when we're done sending 
     return fbMessage(recipientId, text) 
     .then(() => null) 
     .catch((err) => { 
     console.error(
      'Oops! An error occurred while forwarding the response to', 
      recipientId, 
      ':', 
      err.stack || err 
     ); 
     }); 
    } else { 
     console.error('Oops! Couldn\'t find user for session:', sessionId); 
     // Giving the wheel back to our bot 
     return Promise.resolve() 
    } 
    }, 
    // You should implement your custom actions here 
    // See https://wit.ai/docs/quickstart 
}; 

回答

5

這是一個解構運算符,它表示send()接受兩個參數:一個帶有sessionId鍵的對象和一個帶有text鍵的對象。

有效的調用將看起來有點像這樣:

actions.send({sessionId: 42}, {text: "Hello World!"}); 

它也可以其他的方式!所以你可以這樣調用:

let sessionId = 42; 
let text = "Hello World!"; 

// Here it means {sessionId: sessionId}, {text: text} 
action.send({sessionId}, {text}); 
+0

謝謝,Madara Uchiha!非常感激。 – fobia

0

{ sessionId }是用來創建對象的EcmaScript 6語法的代碼。這相當於使用舊語法編寫{ sessionId: sessionId }。所以send({sessionId}, {text})意味着send函數被兩個對象調用,而send(sessionId, text)意味着send函數被調用(可能)兩個字符串。

+0

不知道爲什麼這些問題的答案越來越downvoted ... –

+0

@PatrickRoberts因爲答案是錯的。該示例中未調用該函數,該函數已定義。 –

+1

@MadaraUchiha也許解釋不正確,但要點不是。你的觀點也是低估的,你是說你錯了嗎? –

相關問題