拆分代码行时出现意外的令牌ILLEGAL错误

时间:2015-09-21 08:50:31

标签: javascript

我刚刚使用 timesheet.js 的源代码(参见具体行)并遇到一个小错误,请参阅以下代码行:

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

当我生成HTML并将其拆分为2行时,一切正常,但如果我执行以下操作。将HTML拆分为3行,如下所示:

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

我收到以下错误:

  

未捕获的SyntaxError:意外的标记ILLEGAL

为什么?为什么当我将代码吐入多行时会发生错误?任何人都能解释一下吗?这将是我唯一的问题。

谢谢。

亚历-Z

2 个答案:

答案 0 :(得分:1)

嗯,呃,你把代码拆分在字符串文字的中间。你不能随心所欲地分裂 - 这个语言有规则。就好像你在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>',

答案 1 :(得分:1)

默认情况下,javascript引擎不允许在字符串文字中返回cariage。因此,如果你在第二个例子中添加了一个cariage返回,引擎会在行尾处找到但是找不到字符串char的结尾。

你可以像这样轻松修复你的例子:

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