[英]Why is my spread operator returning a 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.