ЗаданияI необходимо изменить функцию displaySortedTaskList, чтобы она запускалась, если было передано 3 аргумента, и генерировала объект ошибки с сообщением, если не было передано 3 аргумента. Моя попытка:
"use strict";
var sortTaskList = function(tasks) {
var isArray = Array.isArray(tasks);
if (isArray) {
tasks.sort();
}
return isArray;
};
var displaySortedTaskList = function(tasks, div, handler) {
if (arguments.length = Function.length){
var html = "";
var isArray = sortTaskList(tasks);
if (isArray) {
//create and load html string from sorted array
for (var i in tasks) {
html = html.concat("<p>");
html = html.concat("<a href='#' id='", i, "'>Delete</a>");
html = html.concat(tasks[i]);
html = html.concat("</p>");
}
div.innerHTML = html;
// get links, loop and add onclick event handler
var links = div.getElementsByTagName("a");
for (var i = 0; i < links.length; i++) {
links[i].onclick = handler;
}
}
} else {document.getElementById("message").innerHTML = "The displaySortedTaskList function of the tasklist library requires three arguments"}
};
var deleteTask = function(tasks, i) {
var isArray = sortTaskList(tasks);
if (isArray) { tasks.splice(i, 1); }
};
var capitalizeTask = function(task) {
var first = task.substring(0,1);
return first.toUpperCase() + task.substring(1);
};



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете использовать остальные параметры и проверить, равна ли длина массива 3:
var displaySortedTaskList = function(...args) {
if (args.length !== 3) {
document.getElementById("message").textContent = "The displaySortedTaskList function of the tasklist library requires three arguments";
return;
// or `throw new Error('not enough args')` ?
}
const [tasks, div, handler] = args;
// rest of your code
(обратите внимание, что вы должны назначить .textContent при вставке текста - .innerHTML подходит, когда вставка разметки HTML, что здесь не так)
Живой фрагмент:
var displaySortedTaskList = function(...args) {
if (args.length !== 3) {
return console.info('error');
}
console.info('rest of the code');
}
displaySortedTaskList('foo', 'bar');
displaySortedTaskList('foo', 'bar', 'baz');
displaySortedTaskList('foo', 'bar', 'baz', 'buzz');Это просто не добавление задач (запуск функции) или выдача сообщения об ошибке - проверьте картинку, которую я добавил в свой OP. СПАСИБО
Если проблема в том, что функция изначально не запущена, то это то, что вы должны объяснить в своем вопросе, а не о том, как проверить логику внутри функции
Код, который вы разместили, нигде не вызывает или даже не ссылается на displaySortedTaskList. Если вы не вызовете функцию, она никогда не будет вызвана.
Он вызывается в другом JS-файле. Я действительно в тупике. Мне жаль, чувак
Почему последний вызов живого фрагмента не возвращает ошибку, поскольку у него 4 аргумента?
К сожалению, запятая была внутри строки, а не вне списка аргументов
извини, я только что видел это
Вам необходимо указать минимальный воспроизводимый пример в своем вопросе, чтобы можно было воспроизвести проблему, с которой вы сталкиваетесь (чтобы ее можно было исправить).
Вы можете объяснить, что вы имеете в виду под словом «не работает»? В чем ошибка или проблема? Посмотрите живой фрагмент, он, похоже, принесет желаемый эффект