/ / JavaScript TypeError: Kann die Eigenschaft 'eat' von Undefined nicht lesen - Javascript, undefined, TypeFehler

JavaScript TypeError: Kann die Eigenschaft 'eat' von Undefined nicht lesen - javascript, undefined, typeerror

Ich arbeite an einem Projekt, das den Klassiker löst"Wirres Wort" -Puzzle in vielen Zeitungen. Die Grundidee des Projekts ist, dass es ein verschlüsseltes Wort (keine Leerzeichen oder Sonderzeichen) akzeptiert, jede Permutation des Wortes generiert, jede Permutation anhand eines von meinem Professor gelieferten "Wörterbuchs" überprüft und dann jede Permutation hinzufügt, die eigentlich ein Englisch ist Wort an ein Array, das dann weiter verarbeitet wird, um das Ergebnis zu erhalten.

Derzeit stoße ich auf ein auftretendes ProblemWenn ich versuche zu prüfen, ob eine Permutation im "Wörterbuch" ist. Der folgende Code wurde von meinem Professor bereitgestellt und erstellt ein "Wörterbuch" aus einer externen Textdatei. Seiner Meinung nach sollte das Wörterbuch [w] eine Zahl zurückgeben, die mit dem Wort gepaart ist, das die Häufigkeit des Wortes oder "undefiniert" darstellt, wenn das Wort nicht im Wörterbuch enthalten ist.

function readDictionary() {
/**
* @type {string[]}
*/
const lines = fs.readFileSync("count_1w.txt", "utf-8").split("n");
var line;
const dictionary = {};
for (line of lines) {
line = line.trim();
let array = line.split("t");
if (array.length > 1) {
let word = array[0];
let count = array[1];
if (lexicon[word]) {
dictionary[word] = parseFloat(count);
}
}
}
return Object.freeze(dictionary);
}

function getDictionary() {
if (dictionary === null) {
dictionary = readDictionary();
}
return dictionary;
}

var dictionary = getDictionary();

Der folgende Code, den ich geschrieben habe, sollte "true" zurückgeben, wenn das Wörterbuch [Buchstaben] nicht undefiniert ist ...

function inDict(letters) {
if (dictionary[letters] !== undefined){
return true;
}
else{
return false;
}
}

...In seinem aktuellen Status wirft es jedoch den TypeError in den Titel dieses Beitrags, wobei "eat" die erste Permutation der generierten Eingabe ist. Beachten Sie, dass in meinem eigentlichen Code readDictionary (), getDictionary () und var dictionary = getDictionary alle oben inDict () deklariert sind.

Wenn Sie weitere Informationen benötigen, wenden Sie sich bitte anFragen. Ich bin am Ende meines persönlichen JavaScript-Wissens angelangt, und bei mehreren Google-Suchen wurde nichts gefunden, was in meinem speziellen Fall geholfen hat. Anregungen und Meinungen werden sehr geschätzt!

Antworten:

0 für die Antwort № 1

Die Fehlermeldung ist eindeutig: dictionary hat den Wert undefinedWarum ist das so?

Das Problem ist, dass die Funktion getDictionary kehrt zurück undefined. Die Bedingung dictionary === null ist niemals true weil dictionary hat den Anfangswert undefined und undefined === null ist false.

Also, was du wirklich tust, ist

var dictionary; // initial value is undefined
dictionary = dictionary;

was tut nichts.

Ich verstehe nicht, warum Sie brauchen getDictionary überhaupt. Einfach initialisieren dictionary direkt:

var dictionary = readDictionary();

Alternativ können Sie:

Initialisieren dictionary mit null (aber warum sollten Sie?)

var dictionary = null;
dictionary = getDictionary();

Vergleiche mit undefined stattdessen:

function getDictionary() {
if (dictionary === undefined) {
dictionary = readDictionary();
}
return dictionary;
}

Insgesamt, getDictionary ist schlecht konzipiert, da es eine implizite Abhängigkeit von dictionary gibt aber auch einen Wert zurück.