javascript - 将 DomNode 的 innerHTML 与 Regex 而不是“===”进行比较?
问题描述
我正在玩 Puppeteer,我发现在做这件事的同时学习更多的原生 JavaScript 非常棒。我找不到解释的一件事是将 DomNode 的 innerHTML 与给定的字符串进行比较。
如果我使用正则表达式,它可以工作:
await page.$$eval("span", async (spans) => {
const term = "xxx";
const reX = new RegExp(term);
spans.forEach((span) => {
console.log(reX.test(span.innerHTML));
});
});
如果返回 true(如果存在跨度)。
如果我使用===
运算符执行相同的操作,我会得到false
输出。我不确定为什么会这样。
await page.$$eval("span", async (spans) => {
const term = "xxx";
spans.forEach((span) => {
console.log(term === span.innerHTML);
});
});
有人可以为我解释一下吗?
解决方案
好吧,这些不是相同的比较。
RegExp.prototype.test()
与严格相等 ( ===
)有很大不同。
这个例子可能会更清楚一点:
const stringToCheck = "xxx";
console.log(/x/.test(stringToCheck)); // true
console.log("x" === stringToCheck); // false
那是因为/x/.test(stringToCheck)
只需在字符串中的任意位置查找“x”并找到它,而仅当仅包含一个字符“x”"x" === stringToCheck
时才会返回 true 。stringToCheck
推荐阅读
- k6 - K6 我如何制作原始(非编码)帖子
- r - 如何在不添加日期的情况下将字符转换为具有小数秒的时间?
- dart - StreamBuilder 的列表长度?
- python - 当它处于焦点时,如何将命令绑定到输入框?
- sql - SQL - 组合搜索查询而不是多个 DB 行程
- c++ - 如何制作具有同步数据读/写功能的多客户端服务器?
- r - 将 cos^..(...) 替换为 (cos(...))^
- swift - 将 NSDateComponents 分配给标签
- android - Firebase 动态链接请求包含无效参数
- javascript - 在 JavaScript 中检查元音的 Pig Latin 有缺陷的 If 语句