Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么可以';t a<;脚本>;块包含一个带单词“quot”的字符串常量</脚本>&引用;在…内_Javascript_Html - Fatal编程技术网

Javascript 为什么可以';t a<;脚本>;块包含一个带单词“quot”的字符串常量</脚本>&引用;在…内

Javascript 为什么可以';t a<;脚本>;块包含一个带单词“quot”的字符串常量</脚本>&引用;在…内,javascript,html,Javascript,Html,好的,这纯粹是出于好奇:我希望以下标记在HTML文档中有效: var test=“为什么? "; HTML解析器对JavaScript一无所知。它不知道第一个在字符串文本中。它看到的只是第一个,并认为这会关闭块 下面是一个可能更相关的JavaScript示例: var foo = "He said: "Let's go!""; JavaScript解析器对人类对话的文本表示一无所知(例如,我们通常将“speech”放在引号中)。它只看到第二个引号,并认为这终止了字符串文字。但是这不是我们想

好的,这纯粹是出于好奇:我希望以下标记在HTML文档中有效:


var test=“为什么?
";

HTML解析器对JavaScript一无所知。它不知道第一个
在字符串文本中。它看到的只是第一个
,并认为这会关闭块

下面是一个可能更相关的JavaScript示例:

var foo = "He said: "Let's go!"";
JavaScript解析器对人类对话的文本表示一无所知(例如,我们通常将“speech”放在引号中)。它只看到第二个引号,并认为这终止了字符串文字。但是这不是我们想要的,所以我们必须通过转义内部引号来帮助解析器


相关:

您只需要转义
/
字符

<script>
 var test = "<script>why?<\/script>";
</script>

var test=“为什么?”;

HTML引擎和JavaScript引擎是两个不同的东西。首先,HTML引擎解析文档。然后,它将JavaScript代码块传递给JavaScript引擎。(以及CSS引擎的CSS代码,等等。)

由于HTML不知道JavaScript语法,它将结束标记视为整个内容的一部分,并愉快地将标记的内容传递给JavaScript引擎:

<script>
    var test = "<script>why?
</script>

var test=“为什么?

更具体地说,如果您按照解析规则开始

  • 第一个
    将我们置于“脚本数据状态”

  • 我们一直在那里,直到第一个
    如何?
    var test=“why?”;
    ?重复。在这里回答:“链接到一个规范”一旦解析器输入了
    标记,它就处于“脚本数据状态”“。对于查找
    的真正细节,@JamesThorpe如果您将此作为答案发布,我会接受itQ在查找规范的相关部分时被欺骗:)为什么“相关”不是重复的?或者?@MikeMcCaughan:我觉得另一个问题不能很好地解释为什么脚本块在第一次出现
    时终止。但是如果这个问题的答案只是因为它关闭了脚本块,那么当然,它是重复的。你能添加James Thorpe在他对我的问题的评论中发布的W3C规范的链接吗(这只是为了增强答案)?@GyumFox:好建议,我更新了答案。我以前从未真正看过规范的这一部分,跟随它是很有趣的。谢谢