Поместите массив, подобный [1,3] , выдайте ошибку «Неперехваченная синтаксическая ошибка: Недопустимая цель назначения деструкции».

#javascript #arrays #function

Вопрос:

Я пишу функцию сортировки пузырьков для упорядочения чисел в массиве, но когда я помещаю массив, например [1,3] ,vscode и chrome дают мне

Ожидаемый идентификатор.javascript ИЛИ неперехваченная ошибка синтаксиса: Недопустимая цель назначения деструкции

вот полный код

 function bubbleg(arr) {

  var len = arr.length;
  for (var i = 0; i < len - 1; i  ) {
    for (var j = 0; j < len - 1 - i; j  ) {
      if (arr[j] > arr[j   1]) {
        var temp = arr[j];
        arr[j] = arr[j   1];
        arr[j   1] = temp;

      }
    }
  }
  return arr;
}

function bubbleg([1, 3]); 

После внесения изменений, например

 num= [1,3] function bubbleg(num);
 

Все хорошо, но почему мы не можем поставить что-то вроде жевательной резинки([1,3])? Есть ли какие-нибудь книги, чтобы, когда я посмотрю их, в них был список ошибок ?

Ответ №1:

удалите ключевое слово функции при вызове вашей функции. function ключевое слово используется для объявления функции, а не для ее вызова.

 function bubbleg(arr) {
  var len = arr.length;
  for (var i = 0; i < len - 1; i  ) {
    for (var j = 0; j < len - 1 - i; j  ) {
      if (arr[j] > arr[j   1]) {
        var temp = arr[j];
        arr[j] = arr[j   1];
        arr[j   1] = temp;

      }
    }
  }
  return arr;
}
bubbleg([1, 3]);
 

Ответ №2:

это потому, что вы неправильно вызываете функцию bubbleg

 function bubbleg([1,2])
 

должно быть

 bubbleg([1,2])
 

Ответ №3:

Дело не в [1, 3] аргументе, который вы передаете. Но как вы вызываете функцию.

Вот правильный код:

 function bubbleg(arr) {

    var len = arr.length;
    for (var i = 0; i < len - 1; i  ) {
        for (var j = 0; j < len - i - 1; j  ) {
            if (arr[j] > arr[j   1]) {
                var temp = arr[j];
                arr[j] = arr[j   1];
                arr[j   1] = temp;

            }
        }
    }
    return arr;
} 
        
 console.log(bubbleg( [3,1] )); 

Комментарии:

1. да, без меня все в порядке.но это заставит код немного дольше освобождаться

2. Да — это метод оптимизации. Я отредактирую ответ.