indexOf() 反斜杠 returns -1 javascript

indexOf() backslash returns -1 javascript

为什么 javascript 为

'aaaaa\bb'.indexOf('\')

returns

-1?

我希望有 5 个,但我明白了。它确实不会将反斜杠读取为符号,而是将其读取为转义字符?

搜索字符串中的反斜杠('aaaaa\bb')在解析字符串常量时消失; JavaScript 解析器 总是 读取字符串常量中的单个反斜杠作为转义符。你必须将它加倍,就像你在传递给 .indexOf().

的字符串中所做的那样

在您的例子中,\b 是退格控制字符的转义符。即使在像 \q 这样不是 "special" 字符的情况下,反斜杠也基本上被忽略。

如前所述,它被 Javascript 解析器解释为控制字符。 如果您使用扩展语法创建一个数组,您将得到一个 \b 作为单个元素,而不是两个元素 \b

 str = 'aaaaa\bb';
 console.log([...str]);

这是因为 \b 代表退格控制字符,当您 console.log 您的字符串时会被忽略。

const str = '1234\bb';
console.log(str);

所以你的字符串中没有反斜杠,indexOf returns -1.

const str = 'aaaaa\bb';
console.log(str.indexOf('\'));

如果要对反斜杠进行编码,则必须使用 \ 本身对其进行转义:

const str = 'aaaaa\bb';
console.log(str);
console.log(str.indexOf('\'));