SyntaxError:unterminated string literal奇怪的错误

Eme*_*ngo 9 javascript

我在JavaScript中有这个奇怪的未终止的字符串文字错误.当我只输出像"php"这样的单词时(在cache_open.handler变量中).没有错误.这是脚本,下面工作正常:

        <script>
        var cache_open = {};
        var cache_name_open={};         
        var handler='open';
        cache_open.handler='<pre class="brush: html;">php</pre>';           
        cache_name_open.handler='PHP prepared statement';           
        </script>
Run Code Online (Sandbox Code Playgroud)

然而,当我输出一个代码(HTML实体输出的源代码)的罪魁祸首可变cache_open.handler,它在控制台返回未终止的字符串文字错误.

这是它返回错误的示例输出:

        <script>
        var cache_open = {};
        var cache_name_open={};         
        var handler='open';
       cacheObj_open.handler='<pre class="brush: html;">
       &lt;?php
       $stmt = $dbh-&gt;prepare(&quot;SELECT * FROM REGISTRY where name = ?&quot;);
       if ($stmt-&gt;execute(array($_GET['name']))) {
       while ($row = $stmt-&gt;fetch()) {
       print_r($row);
       }
       }
       ?&gt;</pre>';            
    cache_name_open.handler='PHP prepared statement';           
        </script>
Run Code Online (Sandbox Code Playgroud)

起初我以为这只是返回代码的复杂性(例如包含引号等).但即使是简单的HTML代码也会返回错误:

        <script>
        var cache_open = {};
        var cache_name_open={};         
        var handler='open';
        cacheObj_open.handler='<pre class="brush: html;">&lt;html&gt;
        &lt;body&gt;
        &lt;p&gt;Hello world.&lt;/p&gt;
        &lt;/body&gt;
        &lt;/html&gt;</pre>';           
    cache_name_open.handler='PHP prepared statement';           
        </script>
Run Code Online (Sandbox Code Playgroud)

是什么原因导致错误?任何修改建议都非常感谢!

Ham*_*ish 19

没有escape(\),Javascript字符串不能跨越换行符.有关详细解答,请参阅此问题: