斯坦福CS101 Week5 JavaScript报unexpected token {错误求助
CS101 Week5 婴儿姓名统计题语法报错排查
核心报错原因
unexpected token "{"报错和花括号本身没有关系,根源是第一个if条件语句缺了一个闭合右括号:
原错误行代码:
if (row.getField("name").startsWith("A") {
这行中if (开启的条件层括号没有配对闭合,JS解析器扫描到后面的{时,判定条件表达式中出现非法token,直接抛出错误。你之前逐个删除花括号的调试方向完全错了,问题出在小括号配对上。
其余待修正语法点
for循环写法不符合CS101定制JS运行环境的规范:
- 你写的
for (row: table)用了冒号,是Java/Python的遍历语法,JS环境下遍历SimpleTable的正确写法是for (var row in table),需要声明行变量,用in关键字替代冒号,否则括号问题修复后会继续报for循环语法错误。
最终可运行代码
table = new SimpleTable("baby-2010.csv"); count1 = 0; // A开头姓名计数 count2 = 0; // B开头姓名计数 for (var row in table) { if (row.getField("name").startsWith("A")) { count1 = count1 + 1; } if (row.getField("name").startsWith("B")) { count2 = count2 + 1; } } print("A count:", count1); print("B count:", count2);
补充说明:你原代码第二个判断用了
endsWith("B"),统计的是名字以B结尾的数量,和题目要求的「以B开头」不符,上述代码已同步修正。如果题目实际要求是统计A开头、B结尾的姓名数,把第二个判断改回endsWith("B")即可。
内容的提问来源于stack exchange,提问作者REDPHAT
相关产品推荐
相关产品推荐

