Chrome Ошибка типа Uncaught: невозможно прочитать свойство undefined - PullRequest
0 голосов
/ 19 февраля 2020

Я полный новичок в программировании и прохожу книгу Стивена Фута «Обучение программированию». Я пытаюсь выяснить, почему Chrome сообщает мне, что я получил эти две ошибки:

Uncaught TypeError: Невозможно прочитать свойство 'currentDate' из неопределенного
Uncaught TypeError: Невозможно прочитать свойство 'projectName' не определено

Это то, что я написал:

значения. js

var kbValues = {
 projectName: 'kittenbook',
 versionNumber: '0.0.1',
 currentDate: new Date(), 
 currentTime: [kbValues.currentDate.getFullYear() + '-' + 
(kbValues.currentDate.getMonth() + 1)+ '-' +
kbValues.currentDate.getDate() + ' at ' + 
kbValues.currentDate.getHours() + ':' + 
kbValues.currentDate.getMinutes() + ':' + 
kbValues.currentDate.getSeconds()]
};

книга котят. js

document.body.innerHTML = '<h1>Hello, ' + userName + '!</h1>' + 
'<p>' + kbValues.projectName + '' + kbValues.versionNumber +
' accessed on: ' + kbValues.currentTime + '</p>';

манифест. json

{
    "manifest_version": 2,
    "name": "kittenbook",
    "description": "Replace photos on Facebook with kittens",
    "version": "0.0.1",
    "content_scripts": [
        {
            "matches": ["*://www.facebook.com/*"],
            "js": ["js/values.js","js/kittenbook.js"]
        }
    ]
}

Я действительно очень новичок в этом.

1 Ответ

0 голосов
/ 19 февраля 2020

вы не можете использовать свойства переменной во время ее определения, вы пытаетесь получить доступ к currentDate для kbValues, прежде чем назначить его

Как видите, этот фрагмент вернет ошибку:

var kbValues = {
 projectName: 'kittenbook',
 versionNumber: '0.0.1',
 currentDate: new Date(), 
 currentTime: [kbValues.currentDate.getFullYear() + '-' + 
  (kbValues.currentDate.getMonth() + 1)+ '-' +
   kbValues.currentDate.getDate() + ' at ' + 
   kbValues.currentDate.getHours() + ':' + 
   kbValues.currentDate.getMinutes() + ':' + 
   kbValues.currentDate.getSeconds()]
};

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

var currentDate = new Date();

var kbValues = {
 projectName: 'kittenbook',
 versionNumber: '0.0.1',
 currentDate, 
 currentTime: [currentDate.getFullYear() + '-' + 
  (currentDate.getMonth() + 1)+ '-' +
   currentDate.getDate() + ' at ' + 
   currentDate.getHours() + ':' + 
   currentDate.getMinutes() + ':' + 
   currentDate.getSeconds()]
};

console.log(kbValues)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...