Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.01.2022, 15:32
Новичок на форуме
Отправить личное сообщение для JaneGame Посмотреть профиль Найти все сообщения от JaneGame
 
Регистрация: 13.01.2022
Сообщений: 7

Ошибка "Cannot read properties of null"
Добрый день!
Недавно начала учить JS, по условию задания надо создать скрипт, ищущий книгу в библиотеке. Я написала вот это:

findBookBy(type, value){
        for(let i=0; i<this.books.length; i++){
            if(type==this.name[i]&&type==this.author[i]&&type==this.releaseDate[i]&&type==this.type[i]){
                return [value];
            }else{
                return null;
            }
        }
    }


И у меня в тестах выскакивает "Cannot read properties of null (reading 'name')". Я так понимаю, не хватает привязки к классу Book, но не понимаю как её реализовать. Помогите, пожалуйста, разобраться.
Ответить с цитированием
  #2 (permalink)  
Старый 13.01.2022, 15:40
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

Мало информации. Ошибка такая возникает потому, что где-то в коде есть что-то.name где что-то имеет значение null.
В приведённом коде чтение name происходит только в this.name, однако если бы this было null, то до этого места исполнение бы просто не дошло, а свалилось с похожей ошибкой ещё на this.books.length.
Так что нужно больше кода. Ну и если вы в консоли тыкнете по ошибке - у вас откроет проблемное место в отладчике.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 13.01.2022, 15:54
Новичок на форуме
Отправить личное сообщение для JaneGame Посмотреть профиль Найти все сообщения от JaneGame
 
Регистрация: 13.01.2022
Сообщений: 7

Там сам код довольно большой, я скинула его в репозиторий, не знаю какой кусок кода может быть полезен.
Ответить с цитированием
  #4 (permalink)  
Старый 13.01.2022, 17:37
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,707

Сообщение от JaneGame
type==this.name[i]
А name это что такое? Массив или строка?
Ответить с цитированием
  #5 (permalink)  
Старый 13.01.2022, 17:45
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,707

Сообщение от JaneGame
if(type==this.name[i]&&type==this.author[i]&&type==this.releaseDate[i]&&type==this.type[i]){
Я не нашел в вашем классе
class Library{
    constructor(name){
        this.name = name;
        this.books = [];
    }

ни author ни releaseDate ни type
Они есть в классе PrintEditionItem,
Но Library не наследует от него
Ответить с цитированием
  #6 (permalink)  
Старый 13.01.2022, 19:39
Новичок на форуме
Отправить личное сообщение для JaneGame Посмотреть профиль Найти все сообщения от JaneGame
 
Регистрация: 13.01.2022
Сообщений: 7

Сообщение от voraa Посмотреть сообщение
А name это что такое? Массив или строка?
Строка. По идее у нас идет счетчик по книгам и мы сравниваем поэлементно с каждой характеристикой. Возможно, где-то ошиблась в синтаксисе? Пока не очень хорошо разобралась, как это дело работает.

Сообщение от voraa Посмотреть сообщение
Я не нашел в вашем классе
class Library{
    constructor(name){
        this.name = name;
        this.books = [];
    }

ни author ни releaseDate ни type
Они есть в классе PrintEditionItem,
Но Library не наследует от него
Т.е. характеристики он не видит? А если создан экземпляр класса (в тестах он создается)? Просто странно так - null вроде срабатывает, а если что-то находит - выскакивает ошибка. Ничего не понимаю=(
Ответить с цитированием
  #7 (permalink)  
Старый 13.01.2022, 19:54
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,707

Сообщение от JaneGame
Строка. По идее у нас идет счетчик по книгам и мы сравниваем поэлементно с каждой характеристикой
Если name строка, то this.name[i] - i-ый символ этой строки

Я не вижу, ка создаются экземпляры этого класса, и как вызывается функция.
Ответить с цитированием
  #8 (permalink)  
Старый 13.01.2022, 21:05
Новичок на форуме
Отправить личное сообщение для JaneGame Посмотреть профиль Найти все сообщения от JaneGame
 
Регистрация: 13.01.2022
Сообщений: 7

Вот здесь идет создание экземпляров, чуть ниже - их вызов.
Ответить с цитированием
  #9 (permalink)  
Старый 13.01.2022, 21:51
Новичок на форуме
Отправить личное сообщение для JaneGame Посмотреть профиль Найти все сообщения от JaneGame
 
Регистрация: 13.01.2022
Сообщений: 7

Всё, разобралась, спасибо всем большое!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расширение гугл хром error: Cannot read properties of undefined (reading 'onClicked') am-priority Opera, Safari и др. 3 10.09.2021 09:04
Ошибка Uncaught TypeError: Cannot read property '1' of null? orb jQuery 12 18.11.2020 03:12
Ошибка cannot read property Иван Репин Общие вопросы Javascript 1 06.06.2018 12:21
Ошибка Cannot read property 'hide' of null strify_25 jQuery 10 24.05.2016 18:18
Ошибка Uncaught TypeError: Cannot read property 'elements' of undefined Allality Общие вопросы Javascript 14 29.07.2012 18:35