#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. Да — это метод оптимизации. Я отредактирую ответ.