Получение неожиданного идентификатора при ошибке createScript - PullRequest
0 голосов
/ 24 мая 2018

Почему я получаю ошибку для этого кода?Все, что я хочу сделать, это вернуть массив, содержащий кратные аргументы.

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 голосов
/ 24 мая 2018

Как отмечают люди в комментариях, основная причина ошибки заключается в том, что в JS нет int.Есть несколько улучшений / предложений по рефакторингу вашего кода, как показано ниже:

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).Использование Spread syntax делает вашу функцию получающей динамическое число параметров вместо жесткого кодирования до 3 фиксированной длины, что улучшает масштабируемость вашей функции.

Поскольку вы используете ключевые слова arguments, чтобы поддерживать их согласованность, а незацикливаясь ровно 3 раза, замените его на arguments.length вместо него, и оно будет дополнять ...args, как было предложено ранее.Конечно, есть другой, еще более простой и короткий синтаксис для достижения того, что вы делаете, как показано ниже

function multiplyByTwo(...args){
  return [...args].map(x => x * 2);
}

var result=multiplyByTwo(1,2,3,4);
console.log(result)
...