有人可以向我解释这种行为吗?

时间:2019-04-28 01:21:34

标签: javascript

为什么在第一种情况下有反斜杠,而在第二种情况下有反斜杠?转义功能不应该更改任何内容吗?而且,即使最合理的做法是str.replace('\'', '\\\''),所以……先谢谢。

escape = function(str) {
    str = str.replace('\\', '\\\\')
    str = str.replace('\'', '\\\'')
    str = str.replace('\"', '\\\"')
    str = str.replace('\0', '')
    str = str.replace('\r', '\\r')
    str = str.replace('\n', '\\n')
    return str;
}

var original = ("Maura';--");
var escaped = escape("Maura';--");
//var encoded = btoa(escaped);

console.log(original);
console.log(escaped);
//console.log(encoded);

输出:

'Maura';-'

'Maura \';-'

1 个答案:

答案 0 :(得分:1)

在第一种情况下,您不会在字符串escape上应用original函数。在第二种情况下,其变化是由于escape函数的第二行

str = str.replace('\'', '\\\'')

上面的行与

相同
str = str.replace("'", '\\\'').

第二部分\\\'将变为\'