Как исправить неперехваченный javaScript referenceError?

Uncaught ReferenceError: displayTodos не определен в :1:1

var todoList = {
  todos: [],
  displayTodos: function() {
    if (this.todos.length === 0) {
      console.info('You have nothing todo!');
    } else {
      console.info('My Todos:');
      for (var i = 0; i < this.todos.length; i++) {
        console.info(this.todos[i].todoText);
      }
    }
  },
  addTodo: function(todoText) {
    this.todos.push({
      todoText: todoText,
      completed: false
    });
    this.displayTodos();
  },
  changeTodo: function(position, todoText) {
    this.todos[position].todoText = todoText;
    this.displayTodos();
  },
  deleteTodo: function(position) {
    this.todos.splice(position, 1);
    this.displayTodos();
  },
  toggleCompleted: function(position) {
    var todo = this.todos[position];
    todo.completed = !todo.completed;
    this.displayTodos();
  }
};

ожидаемый displayTodos(); для отображения списка дел, но я получаю сообщение об ошибке выше.

Не могу воспроизвести. Укажите минимальный воспроизводимый пример.

str 29.01.2019 23:20

То же самое, я успешно запустил этот код. Рекомендую посмотреть окружающий код на наличие синтаксической ошибки.

Bibberty 29.01.2019 23:21

Пожалуйста, включите код, который вы используете для вызова объекта.

Scott Marcus 29.01.2019 23:21

Это код Sencha или какой-то другой UI Framework? Вы должны показать, как вы используете этот объект. Это не обязательно относится к объекту при передаче функции в качестве параметра другой функции.

NineBerry 29.01.2019 23:22

todos — это не переменная, это свойство объекта todoList. Вы получаете к нему доступ с помощью todoList.displayTodos().

stever 29.01.2019 23:23

отображатьТодос();

Rschomer 29.01.2019 23:23

отображатьТодос();

Rschomer 29.01.2019 23:26

Вы не можете просто вызвать displayTodos(). Он является членом todoList. Вы должны вызвать todoList.displayTodos().

Scott Marcus 29.01.2019 23:26

спасибо @ Скотт Маркус. Это ошибка новичка. Впредь буду осторожнее.

Rschomer 29.01.2019 23:28
Поведение ключевого слова "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) для оценки ваших знаний,...
2
9
89
1

Ответы 1

Проблема в том, что ваша функция displayTodos() не определена в глобальной области видимости, вместо этого вам нужно использовать это:

todoList.displayTodos();

:) хороший звонок, я думаю, мы все предполагаем, что люди знают об этом. Вполне может быть ошибка.

Bibberty 29.01.2019 23:24

когда я работал директором по технологиям в довольно крупной компании, я научился не считать, что люди не делают элементарных ошибок :)

Flash Thunder 29.01.2019 23:27

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