亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

const addName = name => ({firstnmae : name})

const addName = name => ({firstnmae : name})

絕地無雙 2023-05-11 14:31:45
我目前正在學習 JavaScript,我很難理解這兩個函數之間的區別。我以為他們是平等的,但他們的行為完全不同。功能 1:const function1 = name => ({username: name}) // this is returning a object, even tho there is no                                               // return功能 2:`const function2 = (name) => { {username : name }} // this is returning nothing as expected
查看完整描述

4 回答

?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

第二個功能很有趣。第二個函數不創建對象。它是一個帶有塊{}標記語句的函數。您可以通過向對象文字添加另一個屬性來驗證它,它會拋出錯誤:

const?function2?=?(name)?=>?{?{?username:?name,?firstname:?name?}?}

它被這樣解釋,這是一個無效的標簽:


const function2 = (name) => {

? {

? ? username: name,

? ? firstname: name

? }


查看完整回答
反對 回復 2023-05-11
?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

單線箭頭函數將返回結果值。


例如:


const add = (a, b) => a + b;

而多行箭頭函數(或使用{&定義的箭頭}函數不會返回值:


const add = (a, b) => {

  a + b;

};

為了讓上面的返回一個值,你需要 return 關鍵字:


const add = (a, b) => {

  return a + b;

};

令人困惑的部分


你的情況有點混亂,因為你正在處理一個對象文字:


{ username: name }

此語法表示一個“對象”。javascript 中的對象類似于其他語言中的關聯數組——也就是說,它們就像以字符串作為索引的數組。你會看到一個常見的例子是這樣的:


const person = { name: 'Joseph', age: 33 }


// output the name:

console.log(person.name);


// output the age:

console.log(person.age);

因此,通過在第一個示例中將對象文字包裝在括號中,您可以將其維護為單行箭頭函數并返回對象文字。第二個例子實際上是一個多行定義,它將再次......沒有返回值。


查看完整回答
反對 回復 2023-05-11
?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

不同之處在于,一個沒有 return 語句,而另一個有 return 語句的縮寫形式,可以在箭頭函數中用于返回對象而無需明確的 return 語句。



// invalid syntax

const foo = () => {returns: 'object'}


// valid syntax

const foo = () => ({returns: 'object'})



// long form would look like 

const foo = () => {

    return {returns: 'object'}

}

問題是,當你寫的時候foo = () => {returns: 'object'},引擎怎么知道你要返回一個對象,而不是在看到 {} 大括號時打開一個函數體?


為了讓引擎知道它應該是一個應該返回的對象,您可以將它包裝在父對象中。


查看完整回答
反對 回復 2023-05-11
?
米脂

TA貢獻1836條經驗 獲得超3個贊

這兩個功能都是arrow functions.

Function 1是一個隱式返回箭頭函數,因此即使return未使用顯式{username: name},也會返回該對象。

  • 功能 1

const?function1?=?name?=>?({username:?name})

當使用隱式返回箭頭函數以及要返回的對象時,應該將其包裝在().?如果我們不將它包裝在{...}or中(...),那么它將是一個無效的語法

//Invalid?syntax?-->?Will?throw?an?error.?Hence?it?should?be?wrapper?with?`()`
const?function1?=?name?=>?{username:?name}

Function 2但是函數定義中的 as包裝在{ ... }.?由于函數中沒有 return 語句,因此不會返回任何內容。

  • 功能二

const?function2?=?(name)?=>?{?{username?:?name?}}


查看完整回答
反對 回復 2023-05-11
  • 4 回答
  • 0 關注
  • 210 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號