我在Eloquent Javascript书籍第9章的末尾进行正则表达式练习题。 -Eloquent Javascript。 提供了测试正则表达式的功能。当我运行此函数时,它会产生未定义的结果,而不是该函数期望的console.log输出。 code
function verify(regexp, yes, no) {
// Ignore unfinished exercises
if (regexp.source == "...") return;
for (let str of yes)
if (!regexp.test(str)) {
console.log(`Failure to match '${str}'`);
}
for (let str of no)
if (regexp.test(str)) {
console.log(`Unexpected match for '${str}'`);
}
}
// test for car and cat
console.log(verify(/ca[rt]/, ["my car", "bad cats"], ["camper", "high art"]));
答案 0 :(得分:2)
您有三个console.log
语句。
一个记录verify
的返回值。您没有在该函数中放置return
语句,因此它将始终返回undefined
。
仅记录yes
中的某些内容未通过正则表达式的情况,但是yes
数组中的所有内容均通过它。
最后一个日志仅记录no
中的某项确实通过,但其中所有元素均未通过测试的情况。
答案 1 :(得分:0)
您在if和for循环之外缺少默认的return语句。这应该为您提供成功的控制台日志。
function verify(regexp, yes, no) {
// Ignore unfinished exercises
if (regexp.source == "...") return;
for (let str of yes) if (!regexp.test(str)) {
console.log("Failure to match '${str}'");
}
for (let str of no) if (regexp.test(str)) {
console.log("Unexpected match for '${str}'");
}
console.log("all good!");
}
// test for car and cat
console.log(verify(/ca[rt]/,
["my car", "bad cats"],
["camper", "high art"]));