要问这个问题还有更好的方法,但我不确定原因。
首先是代码片段,我马上解构它。
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
中的每个项都应该是一个数组,包含someFunction()
的两个参数,它们也可以方便地用作输出的人类可读的缩写。我的理解是,在可迭代对象(例如存储在parent.argArr
中的数组)上使用,扩展运算符分别输出每个单独的值。 (例如,for
循环的第一次运行应输出someFunction('arg1', 'arg2')
。)
每当我在Node.js或PHP中运行包含此文件的文件时,运行时几乎立即崩溃,尽管它尚未被调用,引用扩展运算符[...
]为意外。
答案 0 :(得分:4)
我认为这是对使用下划线作为变量名称的惩罚。但严重的是,查看您的代码似乎应该可以正常工作,但前提是您的Node解释器足够新以支持它。
要在Node版本中查看spread运算符的支持,请参阅:
要在不支持本机的平台上使用现代语法,请使用Babel:
当然我们无法真正测试它,因为你没有提供一个可运行的例子。
但你可以看到这个答案:
看看你是否可以在那里运行示例。它使用扩展运算符,如果测试它正常工作。如果它在您的系统上运行,那么您应该能够使用扩展运算符。如果没有那么你应该真正升级Node,因为没有理由使用这样一个过时的版本。
如果所有其他方法都失败了,那么您应该始终能够改变:
someFunction(...array);
为:
someFunction.apply(undefined, array);
参见文档:
顺便说一句,我不确定你的意思是说一行“喜欢崩溃” - 它不会一直崩溃吗?这将是非常奇怪的。
答案 1 :(得分:-1)
您必须删除&#34; ...&#34;,尝试:
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;
};