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

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

解構數組參數

解構數組參數

眼眸繁星 2022-10-08 17:26:04
我正在學習解構并快速查詢如何引用數組的元素。我正在使用以下方法在函數參數中的對象內解構嵌套數組:function ajaxOptions({    url,    headers: [         header0 ="Content-Type: text/plain",        ...otherHeaders    ] = [],    data} = {}) {     //... function body}這是給第一個元素一個默認值,header0并傳播其他數組元素。但是如果我有一個設置對象:var settings = {    url: 'http://someothersite.com',     data: 50,     callback: sayHello,     headers: [,  'Header2', 'Header3'] }并將它傳遞給ajaxOptions(settings)我不能header0在設置對象中使用來引用在 ajaxOptions 中解構的數組元素可以嗎?換句話說,我不能將它用作像“url”、“數據”和“回調”這樣的命名參數嗎?希望這是有道理的。如果有幫助,這是完整的代碼:function ajaxOptions({    url: url = "http://www.example.com",    method: method = "post",    headers: [         header0 ="Content-Type: text/plain",        ...otherHeaders    ] = [],    data: data,    callback: callback } = {}) {    return { url, method, headers: [header0, ...otherHeaders], data, callback};}function sayHello(){    console.log('hello');}var defaults = ajaxOptions();var settings = {    url: 'http://someothersite.com',     data: 50,     callback: sayHello,     headers: [, header0 = 'New Header', 'Header2', 'Header3'] }console.log(ajaxOptions(settings));謝謝
查看完整描述

2 回答

?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

header0在你的參數列表中是一個參數,一個局部變量,就像a是一個參數:

function test(a) { }

就像您不能a在該函數之外按名稱引用一樣,您test也不能用您的代碼和header0. 因此,如果您使用 調用您的函數 header0 =,您實際上是在定義一個全局變量header0并在現場為其分配一個值。在嚴格模式下會產生錯誤。它與參數無關header0。

該參數header0將從您作為headers屬性值傳遞的數組的第一個元素中獲取其值。如果您作為參數傳遞的對象沒有該headers屬性,或者該屬性沒有定義不同于 的第一個數組元素undefined,則局部headers0變量將獲得默認值。

不要將此變量與后跟冒號的屬性名稱混淆,后者也出現在您的參數部分:headers:. 這不是一個變量,而只是定義了變量的位置,headers0并且otherHeaders在調用函數時應該獲取它們的值。但headers它本身并不是一個變量。

url另一方面一個變量。它從具有相同名稱的屬性中獲取其值。注意沒有冒號。這使它成為一個變量(參數)。

解構中使用的語法可能非常混亂。例如,如果不是url,you would have url: url2,那么不是定義 variable url,而是定義 variable url2——仍然是url屬性在傳遞給函數的對象中的值。


查看完整回答
反對 回復 2022-10-08
?
偶然的你

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

我認為您應該嘗試使用對象來解決您的問題以引用數組索引。但是,如果您真正想要的是擁有一個返回函數中第一個值的數組,您可以嘗試按如下方式排列數組。


const defaulHeader = ["Content-Type: text/plain"]

const otherHeaders = ["Some-type: application/json"]


 const headers = [ 

        ...defaulHeader,

        ...otherHeaders

    ]


console.log(headers)


查看完整回答
反對 回復 2022-10-08
  • 2 回答
  • 0 關注
  • 114 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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