为什么我的字符串不是字符串?

时间:2016-02-11 03:15:52

标签: javascript

在这里寻求一些厚颜无耻的帮助。一直盯着这个,并且不明白为什么整个事情都不是保持一个字符串:

var str = 
    '<script type="cats/conversion">
        {"type":"REGISTER",
         "params":{"partner_conversion_id":"' + {{sku}} + '",
         "f":"' + {{accountHolderName}} + '",
         "e":"' + {{dl userid}} + '"}
        } 
    <\/script>';

我原本以为所有的str都是字符串,但我的文本编辑器告诉我它不是。我在哪里打了一个&#39;或&#34;?

帮助!!

5 个答案:

答案 0 :(得分:5)

您不能(安全合理地)在JavaScript中执行多行字符串文字。您必须使用连接(+运算符)来构建它们。你可以这样做:

var str = '<script type="cats/conversion">' +
    '{"type":"REGISTER",' +
        '"params":{"partner_conversion_id":"' + {{sku}} + '",' +
        '"f":"' + {{accountHolderName}} + '",' +
        '"e":"' + {{dl userid}} + '"}' +
'}' +
'<\/script>';

注意:我不知道脚本中的{{sku}}和类似占位符是什么。我认为这些是用于某些模板系统的。它们并非如有用的语法。

编辑:从技术上讲,正如亚历克斯在他的回答中指出的那样,您可以通过使用\转义换行来执行多行文字。然而,正如亚历克斯所说,这是“被认为是可怕的做法”,并且由于种种原因而容易被打破。不要这样做!

答案 1 :(得分:0)

试试这个

var str = '<script type="cats/conversion">'+
        '{"type":"REGISTER",'+
         '"params":{"partner_conversion_id":"' + sku + '",'+
         '"f":"' + accountHolderName + '",'+
         '"e":"' + dl_userid + '"}'+
        '} '+
    '<\/script>';

答案 2 :(得分:0)

在Javascript中,您必须在行的末尾添加\以指示多行字符串。这被认为是可怕的做法,因为如果\后跟任何空格,它将引发语法错误。

var ok = "this is \
         my multiline string!";

var notOk = "this is \ 
         my multiline string!";

第二个是错误,因为在行尾\后面有一个空格。

如果您使用的是ES6,则可以使用带有反引号的template strings

var x = `This is my
         multiline string!`;

如果ES6不是一个选项,并且您不希望使用\来跟踪不良做法,请将多个字符串连接在一起或在字符串中插入换行符,如下所示:

var myString = "this is line 1" + 
"               this is line 2" +
"               this is line 3";

var myString = "this is line 1\n               this is line 2\n               this is line 3";

答案 3 :(得分:0)

你要么在一行中完成

var str ='<script type="cats/conversion"> {"type":"REGISTER", "params":{"partner_conversion_id":"' + {{sku}} + '", "f":"' + {{accountHolderName}} + '", "e":"' + {{dl userid}} + '"}} <\/script>';

为了便于阅读,如果你想要它是多行的,你必须连接字符串。

var str = '<script type="cats/conversion">' +
          '{"type":"REGISTER",' +
          '"params":{"partner_conversion_id":"' + {{sku}} + '",' +
          '"f":"' + {{accountHolderName}} + '",' +
          '"e":"' + {{dl userid}} + '"}' +
          '}' +
          '<\/script>';

答案 4 :(得分:-1)

我认为你的意思是这样做:

var str = 
    '<script type="cats/conversion">
    {"type":"REGISTER",
     "params":{"partner_conversion_id":"' + '{{sku}}' + '",
     "f":"' + '{{accountHolderName}}' + '",
     "e":"' + '{{dl userid}}' + '"}
    } 
    <\/script>';

{{}}需要用引号括起来。