function isIsogram(str) {
if (typeof str === undefined) {
return true
}
var passing = true;
var strn = str.toLowerCase()
var counts = {}
for (i = 0; i <= strn.length; i++) {
var letter = strn.charAt(i)
if (counts[letter]) {
counts[letter] = 1 + counts[letter]
} else {
counts[letter] = 1
}
if(counts[letter] > 1) {
return passing = false
}
}
return passing
}
针对我不断得到的测试运行此代码之后; TypeError:无法读取未定义的属性'toLowerCase'
。请问我该如何解决这个问题以及我出错了什么?
答案 0 :(得分:0)
应为"undefined"
。
e.g。
if (typeof str === "undefined")
但你可以用这个替换行,这也会检查空参数。
if (!str) {
return true;
}
e.g。
function isIsogram(str) {
if (!str) {
return true;
}
var passing = true;
var strn = str.toLowerCase();
var counts = {};
for (i = 0; i <= strn.length; i++) {
var letter = strn.charAt(i);
if (counts[letter]) {
counts[letter] = 1 + counts[letter];
} else {
counts[letter] = 1;
}
if (counts[letter] > 1) {
return passing = false;
}
}
return passing;
}
console.log(isIsogram());
console.log(isIsogram(null));
console.log(isIsogram("asdf"));
答案 1 :(得分:0)
两件事......
首先你可以试试..
if (str == undefined) {
return true;
}
而不是使用'typeof'
或者其次将“var strn = str.toLowerCase()”放入try / catch中以捕获错误..
try {
var strn = str.toLowerCase();
} catch (e) {
return true;
}