意外令牌分割代码行时的非法错误

Unexpected token ILLEGAL error when lines of code are split

本文关键字:非法 错误 令牌 分割 代码 意外      更新时间:2023-09-26

我只是在摆弄timesheet.js的源代码(见具体行),遇到了一个小错误,见下面的代码行:

            '<span style="margin-left: ' + bubble.getStartOffset() + 'px; width: ' 
            + bubble.getWidth() + 'px; " class="bubble bubble-' + (cur.type || 'default' ) +  '"></span>',

当我生成HTML并将其分成两行时,一切都工作正常,但如果我做以下操作,即将HTML分成3行,如下所示:

            '<span style="margin-left: ' + bubble.getStartOffset() + 'px; width: ' 
            + bubble.getWidth() + 'px; " 
            class="bubble bubble-' + (cur.type || 'default' ) +  '"></span>',

我得到以下错误:

Uncaught SyntaxError: Unexpected token ILLEGAL

为什么?为什么它是当我吐代码成多行错误发生?有人能解释一下吗?这是我唯一的问题。

谢谢。

Alex-z .

好吧,你在字符串字面量的中间分割了代码。你不能在任何你想要的地方分开——语言是有规则的。这就好像你把它在getStartOffset的中间分开,在一行上得到getS,在另一行上得到tartOffset——这完全是错误的。

最初的分割是在一个表达式中-注意第二行是如何以+开头的,并且不是字符串字面值中的

正确的分割应该是这样的:

'<span style="margin-left: ' + bubble.getStartOffset() + 'px; width: ' 
+ bubble.getWidth() + 'px; " class="bubble bubble-' 
+ (cur.type || 'default' ) +  '"></span>',

如果您需要在字符串字面值的中间进行分割,则需要将其结束并附加另一个:

'<span style="margin-left: ' + bubble.getStartOffset() + 'px; width: ' 
+ bubble.getWidth() + 'px; " '
+ 'class="bubble bubble-' + (cur.type || 'default' ) +  '"></span>',

默认情况下,javascript引擎不允许在字符串文本中使用回车符。所以,如果你像在第二个例子中那样添加回车,引擎会到达行尾,但找不到字符串char的结尾。

你可以很容易地像这样修改你的例子:

'<span style="margin-left: ' + bubble.getStartOffset() + 'px; width: ' 
+ bubble.getWidth() + 'px; " '
+ 'class="bubble bubble-' + (cur.type || 'default' ) +  '"></span>',