【发布时间】:2015-06-08 11:40:55
【问题描述】:
我知道有很多与此错误相关的问题,并且我已经检查了大部分问题,但没有一个可以帮助我解决我的问题。 (这似乎很容易调试......)
我有一个数组(一开始是空的):
var words = [];
我的函数 hasLetter,检查我们是否在数组中找到了一个字母(对象)(我在这里称之为:d)单词。
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
我不知道该怎么说“如果它是未定义的,那么不要调查它或类似的东西......
谢谢
【问题讨论】:
-
如果你想在数组中找到一个字母,那么 (words.indexOf(letter) > 0) 将返回你是否存在这个字母。
-
你不能做
hasLetter("a",words[]);,应该是hasLetter("a",words); -
@mohamedrias 不,不会的。
-
您使用的是哪种浏览器?
-
@Greg 谢谢我浪费了我 1 天的时间来调试,当我来到这里并解决了我的问题
标签: javascript arrays error-handling typeerror