SyntaxError: illegal character
当 词法分析器 读取一个不在字符串字面量中的字符时,就会发生 JavaScript 异常 "非法字符",并且该字符不能构成语言中的有效标记。
消息
SyntaxError: Invalid or unexpected token (V8-based) SyntaxError: illegal character U+201C (Firefox) SyntaxError: Invalid character '\u201c' (Safari)
错误类型
哪里出错了?
有一个解释器不理解的无效字符。您应该将其放在字符串字面量中或将其替换为其他字符。使用支持语法高亮的编辑器,并仔细检查代码中的不匹配,例如减号 (-
) 与连字符 (–
) 或单引号 ("
) 与非标准引号 (“
) 之间的区别。
示例
字符不匹配
有些字符看起来很相似,但会导致解析器无法解释您的代码。最常见的例子是引号,减号或分号 (希腊问号 (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 会通知您,或者至少对它使用略微不同的突出显示,但并非所有编辑器和 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>