2016-04-22 1 views
0

Моя переменная 'todoList' отображается как неопределенная. Я очень новичок в javascript и программировании в целом. любая помощь будет очень признательна!javascript: undefined variable

var todoList = { 
 
    todos:[], 
 
    displayTodos: function() { 
 
    if (this.todos.length === 0) { 
 
     console.log ('Your todos list is empty!'); 
 
    } else { 
 
     console.log('My Todos:'); 
 
     for (var i = 0; i < this.todos.length; i++) { 
 
     if (this.todos[i].completed === true) { 
 
      console.log ('(x)', this.todos[i].todoText); 
 
     } else { 
 
      console.log('()', 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(); 
 
    }, 
 
    toggleAll: function() { 
 
    var totalTodos = this.todos.length; 
 
    var completedTodos = 0; 
 
    for (var i = 0; i < totalTodos; i++) { 
 
     if(this.todos[i].completed === true) { 
 
     completedTodos++; 
 
     } 
 
    } 
 
    if (completedTodos === totalTodos) { 
 
     for(var i =0; i < totalTodos; i++) { 
 
     this.todos[i].completed === false; 
 
     } 
 
    } 
 
    this.displayTodos; 
 
    } 
 
};

+0

Ваш код для объявления и присвоения 'todoList' выглядит отлично. Вам нужно будет предоставить более подробную информацию о том, где в вашем коде переменная 'undefined'. – smaili

+0

попытайтесь добавить '&&! This.todos [i] .todoText' на ваш' if (this.todos [i] .completed === true) ' –

+0

Возможно, вы пытаетесь получить доступ к объекту todoList из более высокой области видимости, поэтому todoList не отображается, поэтому не определено. –

ответ

0

JavaScript всегда возвращает что-то. Если я копирую/вставляю код в консоль Chrome и запускаю его, он сообщает мне, что возвращаемый результат запуска этого кода undefined. Это нормально, поскольку вы просто настраиваете объект и не намерены использовать возвращаемое значение.

enter image description here

После этого объект был создан и ввести его в консоль Chrome говорит нам, что переменная todoList является объектом.

enter image description here

+0

Спасибо! Это было действительно полезно! – justinsunghokim

+0

Рад, что это было полезно, @justinsunghokim. Если вы удовлетворены моим ответом, можете ли вы принять его? –

 Смежные вопросы

  • Нет связанных вопросов^_^