在createScript错误时获取意外的标识符

时间:2018-05-24 02:56:11

标签: javascript arrays error-handling stack-trace

为什么我收到此代码的错误?我想做的就是返回一个包含多个参数的数组。

function multiplyByTwo(a,b,c){
 //we have two variables i and ar which is an array
 var i,ar=[];
 //for loop cycles through 0-2 and multiplies each by two
 for(int i=0;i<3;i++){
//  arguments[3] // Takes the arguem Follows array indexing notations. 
//at i=0, ar[0]=arguments[0]*2, arguments[0]=a*2
//at i=1, ar[1]=arguments[1]*2, arguments[1]=b*2
//at i=2, ar[2]=arguments[2]*2, arguments[2]=c*2
ar[i]=arguments[i]*2;
    }
 return ar;
}

var result=multiplyByTwo(1,2,3);



Error: SyntaxError: Unexpected identifier
at createScript (vm.js:53:10)
at Object.runInThisContext (vm.js:95:10)

1 个答案:

答案 0 :(得分:0)

正如评论中的人员所说,错误的主要原因是Card中没有int。重构代码有一些改进/建议,如下所示:

JS

首先,方法function multiplyByTwo(...args){ var i,ar=[]; for(let i=0;i<arguments.length;i++){ ar[i]=arguments[i]*2; } return ar; } var result=multiplyByTwo(1,2,3,4); 。使用multiplyByTwo(...args)使您的函数接收动态数量的参数,而不是硬编码为3个固定长度,这样可以提高函数的可伸缩性。

由于您使用的是关键字Spread syntax,为了使其保持一致,而不是正好循环3次,请将其替换为arguments,而是赞美之前建议的arguments.length。当然还有其他更简单和更短的语法可用于实现您正在执行的操作,如下所示

...args