好吧我正在尝试运行以下代码,我得到一个异常,即startsWith方法未定义。不应该在javascript中自动定义吗?
var mailArchive = retrieveMails();
var livingCats = {"Spot": true};
for (var mail = 0; mail < mailArchive.length; mail++) {
var paragraphs = mailArchive[mail].split("\n");
for (var paragraph = 0;
paragraph < paragraphs.length;
paragraph++) {
if (startsWith(paragraphs[paragraph], "born")) {
var names = catNames(paragraphs[paragraph]);
for (var name = 0; name < names.length; name++)
livingCats[names[name]] = true;
}
else if (startsWith(paragraphs[paragraph], "died")) {
var names = catNames(paragraphs[paragraph]);
for (var name = 0; name < names.length; name++)
delete livingCats[names[name]];
}
}
}
show(livingCats);
答案 0 :(得分:2)
某些版本的javascript(Firefox中的实验方法)有一个.startsWith()
字符串方法,您可以使用它:
if (paragraphs[paragraph].startsWith("died"))
常规javascript没有像您尝试使用的全局函数startsWith()
,除非您正在加载某个具有该功能的库,这就是浏览器告诉您未定义的原因。
可以在任何版本的JS中使用的推荐解决方案是:
if (paragraphs[paragraph].indexOf("died") === 0)
代替。
或者,您可以定义您正在使用的全局函数:
function startsWith(src, find) {
return src.substr(0, find.length) == find;
}
答案 1 :(得分:-2)
它是String的方法,而不是全局函数。
应该是:
paragraphs[paragraph].startsWith("born")