簡體   English   中英

為什么這個擴展運算符會在 Node 7.8.0 中導致 SyntaxError: Unexpected token?

[英]Why is this spread operator causing a SyntaxError: Unexpected token in Node 7.8.0?

首先是代碼片段,我稍后會對其進行解構。

 this.argArr = [['arg1', 'arg2'], ['foo', 'bar'], ['you get ', 'the point']]; this.evalArgsFromArr = function () { var out = []; for (var _ = 0; _ < parent.argArr.length; _++) { out.push(someFunction(...parent.argArr[_])); // This part crashes } return out; };

當然,這個函數是對象的一部分。

這個想法是, parent.argArr每個項目parent.argArr應該是一個數組,包含someFunction()兩個參數,它們也可以方便地作為人類可讀的輸出濃縮。 我的理解是,在可迭代對象(例如存儲在parent.argArr的數組)上使用時,擴展運算符分別輸出每個單獨的值。 (例如, for循環的第一次運行應該輸出someFunction('arg1', 'arg2') 。)

每當我在 Node.js 或 PHP 中運行包含此文件的文件時,我都會收到一個 SyntaxError: Unexpected token,引用了擴展運算符 [ ... ]。

這是錯誤消息,如果有幫助的話: 錯誤信息

我正在使用節點 7.8.0。

我認為這是對使用下划線作為變量名的懲罰。 但說真的,看看你的代碼似乎它應該可以工作,但前提是你的 Node 解釋器足夠新來支持它。

要查看 Node 版本中擴展運算符的支持,請參閱:

要在原生不支持現代語法的平台上使用現代語法,請使用 Babel:

當然,我們無法真正測試它,因為您沒有提供可運行的示例。

但是你可以看到這個答案:

看看你能不能在那里運行這個例子。 它使用擴展運算符,並測試它是否可以正常工作。 如果它在您的系統上運行,那么您應該能夠使用擴展運算符。 如果沒有,那么你真的應該升級 Node,因為沒有理由使用這樣一個過時的版本。

如果所有其他方法都失敗了,那么您應該始終能夠更改:

someFunction(...array);

到:

someFunction.apply(undefined, array);

查看文檔:

順便說一句,我不確定你說的一行“喜歡崩潰”是什么意思——它不是總是崩潰嗎? 會很奇怪。

您必須刪除“...”,請嘗試:

this.argArr = [['arg1', 'arg2'], ['foo', 'bar'], ['you get ', 'the point']];

this.evalArgsFromArr = function () {
  var out = [];
  for (var _ = 0; _ < parent.argArr.length; _++) {
    out.push(someFunction(parent.argArr[_]));
  }
  return out;
};

暫無
暫無

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

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