arguments.length запускает функцию, если передано 3 аргумента, в противном случае выдается объект ошибки - PullRequest
0 голосов
/ 04 декабря 2018

Задачи Мне нужно изменить функцию 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);
            };

1 Ответ

0 голосов
/ 04 декабря 2018

Вы можете использовать остальные параметры и проверить, равна ли длина массива 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.log('error');
  }
  console.log('rest of the code');
}

displaySortedTaskList('foo', 'bar');
displaySortedTaskList('foo', 'bar', 'baz');
displaySortedTaskList('foo', 'bar', 'baz', 'buzz');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...