消息
SyntaxError: Invalid or unexpected token (V8-based) SyntaxError: illegal character U+201C (Firefox) SyntaxError: Invalid character '\u201c' (Safari)
错误类型
SyntaxError
哪里出错了?
解释器无法理解无效字符。你应该将其放入字符串字面量中,或将其替换为其他字符。使用支持语法高亮的编辑器,并仔细检查你的代码,以防出现不匹配,例如减号 (-) 与破折号 (–) 或普通引号 (") 与非标准引号 (“) 等。
示例
不匹配的字符
有些字符看起来相似,但会导致解析器无法解释你的代码。这方面的著名例子有引号、减号或分号(希腊问号 (U+37e) 看起来相同)。
js
“This looks like a string”; // SyntaxError: illegal character
// “ and ” are not " but look like it
42 – 13; // SyntaxError: illegal character
// – (en-dash) is not - but looks like it
const foo = "bar"; // SyntaxError: illegal character
// <37e> is not ; but looks like it
这应该有效
js
"This is actually a string";
42 - 13;
const foo = "bar";
一些编辑器和 IDE 会通知你,或者至少会使用稍微不同的高亮显示,但并非所有都会。当你的代码发生这种情况,并且你无法找到问题根源时,通常最好直接删除有问题的行并重新输入。
遗漏的字符
很容易在此处或彼处遗漏一个字符。
js
const operators = ["+", "-", ×", "÷"];
// SyntaxError: illegal character U+00D7
为 "×" 添加缺少的引号。
js
const operators = ["+", "-", "×", "÷"];
隐藏字符
当从外部源复制粘贴代码时,可能存在无效字符。请注意!
js
const foo = "bar";
// SyntaxError: illegal character
在 VIM 等编辑器中检查此代码时,你可以看到实际上存在一个零宽空格 (ZWSP) (U+200B) 字符。
js
const foo = "bar";<200b>