【问题标题】:Multiline string issue多行字符串问题
【发布时间】:2023-09-24 11:32:01
【问题描述】:

jsLint 没有报告错误。但是当我将它发布到 jsbin.com 时,我会收到警告。此外,如果我搜索“+”之前的错误换行符警告,我会看到有人试图在 jsLint 中关闭此选项。

sn-p:

var some_html = " "
    + "<div>"
    +     "<span></span>"
    + "</div>";

这样定义/分配字符串有问题吗?

【问题讨论】:

  • 你为什么要$-给你的非jQuery变量加前缀?!
  • @ThiefMaster 那是错误。这最初是从 php 文档中复制的,然后进行了改编。修好了。

标签: javascript jslint


【解决方案1】:

代码没有问题,jsbin.com只是希望它写成这样:

var some_html = " " +
    "<div>" +
    "<span></span>" +
    "</div>";

出于某种原因。我会忽略警告。

顺便说一句,将+ 与它扩展的字符串放在同一行,就像上面一样,JSLint 也接受。因此,如果您希望您的代码在没有警告的情况下传入两者,您可能希望坚持这样做。

事实上,JSLint 并不介意您编写它的方式,但人们已经写过它,这可能是因为 JSLint 摆脱了这个警告(尽管我只是在猜测!)。

【讨论】:

  • 代码有问题。它不能保证工作。通过将+ 放在下一行,您可以使当前行受JavaScript 解释器插入分号的影响。它可能在一个 JavaScript 引擎中工作,但在另一个引擎中失败。
  • @DominicMitchell,我不知道 - 你能提供一个示例浏览器/JavaScript引擎吗?
  • EMCA spec(至少 5.1 版)给出了何时可以自动插入分号的具体细节(第 7.9 节)。我不认为这是(应该是!)特定于实现的。
  • 不要排除引擎不合格的可能性。例如与所有其他浏览器相比,IE 中的尾随逗号问题有所不同。
  • 那么有没有 JS 引擎在这个问题中的代码是一个问题 - 或者这只是一个理论问题?
【解决方案2】:
var some_html = [
    '<div>',
    '<span></span>',
    '</div>'
].join('');

这是做什么的,它将你的破碎字符串放在一个数组中,并在没有分隔符的情况下加入它们。它将返回一个字符串。我想这会过去的。

【讨论】: