簡體   English   中英

如果console.log(…arguments)正常,為什么var a =…arguments失敗?

[英]Why does var a = …arguments fail, if console.log(…arguments) is OK?

代碼A,可以,並記錄[ 1, 2, 3 ]

function fn() {
    console.log(...arguments);
}

fn([1, 2, 3]);

代碼B,這個失敗, SyntaxError: Unexpected token ...此外,包裝...arguments()也不會有幫助。

function fn() {
    var a = ...arguments;
}

fn([1, 2, 3]);

我假設在兩種情況下,我們都有一個RHS查找。 為什么可以將...arguments傳遞給console.log (或其他函數),而不是將其分配給變量?

PS。 我知道這永遠不會存在於現實生活的代碼中,或者有其他更好的解決方案。 我的問題純粹是理論上/概念上的,僅限於理解為什么會發生不同的行為。

傳播語法的兩個應用是:

  1. 將可迭代值的項目轉換為函數調用的參數
  2. 將可迭代項轉換為數組元素

所以這工作:

function fn() {
    var a = [...arguments];
}

不能像CODE B一樣工作...語法無效

您可以在fn參數中傳播

function fn(...params) 
{
  ...
}

ArrayObject

var a = [1,2,3,4,5],
b = [6,...a];

var x = {a:1,b:1},
y = {c:1,...x}

暫無
暫無

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

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