有没有办法比较“\x3C!--”和“<!--”并在JavaScript中得到'true'?
Is there a way to compare "\x3C!--" with "<!--" and get 'true' in JavaScript?
在我的一个项目中,我必须解析 HTML 页面并检查每个解析的“候选标签”是否在预定义的标签定义字符串列表中。
当由于某种原因解析器 returns "\x3C!--"
作为“标记候选”时,问题出现了,所以当我将它与 "<!--"
进行比较时,我得到 false
列表。
有什么方法可以true
比较这些字符串吗?
更新:
为了澄清我的问题并解释错误发生的位置,我添加了 DevTools 面板的两个屏幕截图,Google Chrome,版本 104.0.5083.0(官方构建)dev(64 位)。
我们可以看到 nodeParse.tagOpening
的值在赋值后几乎立即发生了变化。挺奇怪的。
但更奇怪的是,如果我在本地范围内打开 nodeParse
对象的属性,则会显示 tagOpening
.
的正确(初始分配)值
所以浏览器似乎知道显示的两个值实际上是等价的,但出于某种原因将它们区分开来。有什么意见吗?
在 HTML 文档中 <!--
是评论的开始分隔符,即使在 <script>
标签中,参见 HTML-like Comments,所以我会避免将其作为字符串包含在内在你的代码中。
相反,您可以首先在 tag-defining 字符串中使用十六进制转义序列。例如:
nodeParse.tagOpening = '\x3C!--';
nodeData.tagStarter = '\x3C!--';
经过更深入的调查后,我发现 "\x3C!--" == "<!--"
始终是 true
,没有额外的努力(见下面的屏幕截图)。
但是我们应该记住,字符串 "<!--"
(以及任何更长的字符串)按原样存储在变量中,但在存储在对象的 [=27 中时会转换为 "\x3C!--"
=].至少在 Google Chrome.
所以我们应该将对象的 属性 赋值给一个变量(比如 var s2 = ob.a;
),如果我们想得到值 "<!--"
是肯定的。我不知道,所以我在我的代码中犯了一个错误。
在我的一个项目中,我必须解析 HTML 页面并检查每个解析的“候选标签”是否在预定义的标签定义字符串列表中。
当由于某种原因解析器 returns "\x3C!--"
作为“标记候选”时,问题出现了,所以当我将它与 "<!--"
进行比较时,我得到 false
列表。
有什么方法可以true
比较这些字符串吗?
更新:
为了澄清我的问题并解释错误发生的位置,我添加了 DevTools 面板的两个屏幕截图,Google Chrome,版本 104.0.5083.0(官方构建)dev(64 位)。
我们可以看到 nodeParse.tagOpening
的值在赋值后几乎立即发生了变化。挺奇怪的。
但更奇怪的是,如果我在本地范围内打开 nodeParse
对象的属性,则会显示 tagOpening
.
所以浏览器似乎知道显示的两个值实际上是等价的,但出于某种原因将它们区分开来。有什么意见吗?
在 HTML 文档中 <!--
是评论的开始分隔符,即使在 <script>
标签中,参见 HTML-like Comments,所以我会避免将其作为字符串包含在内在你的代码中。
相反,您可以首先在 tag-defining 字符串中使用十六进制转义序列。例如:
nodeParse.tagOpening = '\x3C!--';
nodeData.tagStarter = '\x3C!--';
经过更深入的调查后,我发现 "\x3C!--" == "<!--"
始终是 true
,没有额外的努力(见下面的屏幕截图)。
但是我们应该记住,字符串 "<!--"
(以及任何更长的字符串)按原样存储在变量中,但在存储在对象的 [=27 中时会转换为 "\x3C!--"
=].至少在 Google Chrome.
所以我们应该将对象的 属性 赋值给一个变量(比如 var s2 = ob.a;
),如果我们想得到值 "<!--"
是肯定的。我不知道,所以我在我的代码中犯了一个错误。