Javascript Uncaught TypeError: Cannot read property '0' of undefined
Javascript Uncaught TypeError: Cannot read property '0' of undefined
我知道有很多与此错误相关的问题,我已经检查了其中的大部分,none 帮助我解决了我的问题。 (这看起来很容易调试...)
我有一个数组(一开始是空的):
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 returns 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);
它returns:
Uncaught TypeError: Cannot read property '0' of undefined
我不知道该怎么说“如果它是未定义的,那么不要研究它或类似的东西......
谢谢
我用你的代码没有报错,
但我是这样调用 hasLetter
方法的:
hasLetter("a",words);
错误在这里:
hasLetter("a",words[]);
您传递的是 words
的第一项,而不是数组。
相反,将数组传递给函数:
hasLetter("a",words);
问题已解决!
以下是问题的细分:
我猜在你的浏览器中(chrome 抛出不同的错误),words[] == words[0]
,所以当你调用 hasLetter("a",words[]);
时,你实际上是在调用 hasLetter("a",words[0]);
。因此,本质上,您是将单词的第一项传递给您的函数,而不是整个数组。
当然,因为words
只是一个空数组,所以words[0]
就是undefined
。因此,你的函数调用实际上是:
hasLetter("a", undefined);
这意味着,当您尝试访问 d[ascii]
时,您实际上是在尝试访问 undefined[0]
,因此出现错误。
我知道有很多与此错误相关的问题,我已经检查了其中的大部分,none 帮助我解决了我的问题。 (这看起来很容易调试...)
我有一个数组(一开始是空的):
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 returns 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);
它returns:
Uncaught TypeError: Cannot read property '0' of undefined
我不知道该怎么说“如果它是未定义的,那么不要研究它或类似的东西......
谢谢
我用你的代码没有报错,
但我是这样调用 hasLetter
方法的:
hasLetter("a",words);
错误在这里:
hasLetter("a",words[]);
您传递的是 words
的第一项,而不是数组。
相反,将数组传递给函数:
hasLetter("a",words);
问题已解决!
以下是问题的细分:
我猜在你的浏览器中(chrome 抛出不同的错误),words[] == words[0]
,所以当你调用 hasLetter("a",words[]);
时,你实际上是在调用 hasLetter("a",words[0]);
。因此,本质上,您是将单词的第一项传递给您的函数,而不是整个数组。
当然,因为words
只是一个空数组,所以words[0]
就是undefined
。因此,你的函数调用实际上是:
hasLetter("a", undefined);
这意味着,当您尝试访问 d[ascii]
时,您实际上是在尝试访问 undefined[0]
,因此出现错误。