Arguments.length запускает функцию, если передано 3 аргумента, в противном случае генерирует объект ошибки

Задания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);
            };
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
35
1

Ответы 1

Вы можете использовать остальные параметры и проверить, равна ли длина массива 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');

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

CertainPerformance 04.12.2018 03:27

Это просто не добавление задач (запуск функции) или выдача сообщения об ошибке - проверьте картинку, которую я добавил в свой OP. СПАСИБО

James Holloway 04.12.2018 03:32

Если проблема в том, что функция изначально не запущена, то это то, что вы должны объяснить в своем вопросе, а не о том, как проверить логику внутри функции

CertainPerformance 04.12.2018 03:33

Код, который вы разместили, нигде не вызывает или даже не ссылается на displaySortedTaskList. Если вы не вызовете функцию, она никогда не будет вызвана.

CertainPerformance 04.12.2018 03:34

Он вызывается в другом JS-файле. Я действительно в тупике. Мне жаль, чувак

James Holloway 04.12.2018 03:43

Почему последний вызов живого фрагмента не возвращает ошибку, поскольку у него 4 аргумента?

James Holloway 04.12.2018 03:43

К сожалению, запятая была внутри строки, а не вне списка аргументов

CertainPerformance 04.12.2018 03:44

извини, я только что видел это

James Holloway 04.12.2018 03:45

Вам необходимо указать минимальный воспроизводимый пример в своем вопросе, чтобы можно было воспроизвести проблему, с которой вы сталкиваетесь (чтобы ее можно было исправить).

CertainPerformance 04.12.2018 03:51

Другие вопросы по теме