“意外的令牌非法”没有明显原因
遇到 JavaScript 错误“未捕获的语法错误:意外的令牌非法”时,最初的反应可能是缺乏明显的原因,特别是对于像“var foo = 'bar';"。
错误的来源
当 JavaScript 代码被解析时,它会分解为“标记”,以及任何不能归类为“标记”的标记。四种基本类型被贴上“非法”标签。此错误也可能由错误放置的字符或缺少语法元素引起,例如杂散的 @ 符号、不平衡的大括号、不正确的引用等等。
不可见的非法字符
在语法看起来有效的情况下,罪魁祸首可能是一个不可见的字符:Unicode 零宽度空格(ZWSP 或 U 200B),表示为.此字符通常会导致“意外标记非法”错误,该错误源自 jsfiddle 等来源,众所周知,jsfiddle 会嵌入 ZWSP 来控制自动换行。
识别不可见字符
要发现 ZWSP,请在编辑器中启用不可见字符的显示。例如,在 Vim 中,它显示为
相关问题
ZWSP 具有合法目的,可以实现精确的换行控制。然而,它的存在也会带来其他问题,例如:
ECMAScript 规范
虽然 ECMAScript 规范提到了类似的空白字符,但它没有明确提及 ZWSP。然而,规范中对“空格分隔符”的引用表明,ZWSP 实际上应该被视为空白。然而,当前的实现将其视为意外令牌。
以上是为什么我的 JavaScript 代码中会出现'Uncaught SyntaxError: Unexpected token ILLEGAL”?的详细内容。更多信息请关注PHP中文网其他相关文章!