[解決済み】Javascript Uncaught TypeError: 未定義のプロパティ'0'を読み取れない
質問
このエラーに関連する質問がたくさんあることは知っていますし、それらのほとんどをチェックしましたが、私の問題を解決するのに役立つものはありませんでした。(デバッグするのは簡単なようですが・・・)。
私は配列を持っています(最初は空です)。
var words = [];
そして、私の関数hasLetterは、配列(ここではdと呼ぶ)wordsの中に文字(オブジェクト)があるかどうかをチェックするものです。
function hasLetter(letter,d){
// if words[0] not null should return object of letter "a", here we getting
// the index of the letter (since ascii of "a" is 97, I substract 97)
var ascii = letter.charCodeAt(0)-97;
//Trying to not get an error with this but still creates an err
if(typeof d[ascii ] !== "undefined" && d[ascii ] !== null && d[ascii ].length > 0){
if(d[ascii].letter == letter){
return true;
}
}
return false; }
そして、addLetterという関数があり、hasLetterがtrue/falseを返すかどうかをチェックし、それに応じて新しいノードを作成するかしないかを決めています。
function addLetter(letter,d){
var ascii = letter.charCodeAt(0)-97;
if(!hasLetter(letter,d)){
document.write("This letter" + letter + " hasn't been found in words.");
d[ascii] = new Node(letter);
}
document.write("This letter " + letter + " already exists in words.");
document.write(d[ascii].letter);
}
とテストすると
addLetter("a",words);
を返します。
Uncaught TypeError: Cannot read property '0' of undefined
"未定義なら調べないでくださいとか、そういうのはどうしたらいいんだろう...。
ありがとうございます。
解決方法は?
エラー内容はこちらです。
hasLetter("a",words[]);
の最初の項目を渡しています。
words
を、配列の代わりに使用します。
その代わり、関数に配列を渡します。
hasLetter("a",words);
問題解決
何が問題だったのか、その内訳を説明します。
ブラウザで推測しています(クロームは違うエラーを投げます)。
words[] == words[0]
を呼び出すと
hasLetter("a",words[]);
を呼び出しているのであって、実際には
hasLetter("a",words[0]);
. つまり、要するに、単語の最初の項目を関数に渡しているわけです。
ではなく
という配列があります。
もちろん、なぜなら
words
は単なる空の配列です。
words[0]
は
undefined
. したがって、あなたの関数呼び出しは、実際には。
hasLetter("a", undefined);
にアクセスしようとすると
d[ascii]
にアクセスしようとしているのであって、実際には
undefined[0]
そのため、エラーが発生します。
関連
-
スプレッドシートに匹敵するオンライングリッドシステム。EditGrid
-
[解決済み】gitが「Pull is not possible because you have unmerged files」と言うのはなぜですか?
-
[解決済み】ActionController::InvalidAuthenticityTokenについて
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] JavaScriptでNULL、未定義、空白の変数をチェックする標準的な関数はありますか?
-
[解決済み] JavaScript でオブジェクトが特定のプロパティを持つかどうかを確認するにはどうすればよいですか?
-
[解決済み] JavaScriptのnullとundefinedの違いは何ですか?
-
[解決済み] React - uncaught TypeError: 未定義のプロパティ 'setState' を読み取れない
-
[解決済み] jQuery.inArray()、正しい使い方は?
-
[解決済み】未定義のオブジェクトプロパティを検出する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
複数のサイトをまとめてよく見たい オススメ度
-
InstallShield でレジストリキーを取得するスクリプト
-
合理的オブジェクトスクリプトコマンド
-
スクリプトとは何かを簡単に説明します。
-
linux シェル学習ノート 4日目
-
[解決済み] 式は変更可能なlvalueでなければならない
-
[解決済み】C++使用時、代入の左オペランドにlvalueが必要なエラーについて
-
[解決済み】以下の追跡されていないワーキングツリーファイルは、マージによって上書きされますが、私は気にしません。
-
[解決済み】gitが「Pull is not possible because you have unmerged files」と言うのはなぜですか?
-
[解決済み】c++のコンパイルエラーです。ISO C++はポインタと整数の比較を禁止しています。