问题描述
|
我被要求记录一些代码。一些javascript函数传递参数,例如
onclick=\'showhide(<%#String.Format(\"\\\"#customer{0}\\\"\",Container.DataItemIndex) %>);\'
代码中\“ \\\”的目的是什么?
他们是某些特殊的转义字符吗?如果删除它们,代码会失败吗?解决方法
它们用“转义”引号引起来,因此可以将它们包含在字符串中。否则,它们将与字符串的开始/结束引号引起混淆。
http://en.wikipedia.org/wiki/Escape_character,这看起来不像(纯)JavaScript,而是像其他一些产生JavaScript代码的语言(可能是ASP.NET):
假设“ 1”是语言代码,可将包含的语句的结果插入文本,这意味着
String.Format(\"\\\"#customer{0}\\\"\",Container.DataItemIndex)
将被写在函数调用的右括号和右括号之间。
这意味着转义字符“ 3”在此处不在JavaScript中使用,而是在宿主语言(可能是C#或VB.NET)中使用。含义可能与JavaScript中的相同,不过::它转义了双引号,以使其可以在字符串文字中表示。,代码中\“ \\\”的目的是什么?
在我看来就像是转义序列。假设这是C#代码,则代码中的字符串为:
\"\\\"#customer{0}\\\"\"
编译器解释为:
\"#customer{0}\"
(这包括双引号)
当这是response.write时,输出将变为:
onclick=\'showhide(\"#customer_1234\");\'
,是的,它是一个转义字符。
在这种情况下,它转义了\“字符。,这是上面代码中使用的转义序列。
用字符串\\\"
编写时,等效于\"
。即
<%#String.Format(\"\\\"#customer{0}\\\"\",Container.DataItemIndex) %>
如果DataItemIndex
是9
将会呈现出类似的结果
\"#customer9\"