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

问题描述 投票:1回答:1

为什么在第一种情况下会出现反斜杠,而在第二种情况下呢?逃避功能不应该改变什么吗?即使它是最合乎逻辑的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);

输出:

'莫拉'; - ”

'莫拉\'; - ”

javascript
1个回答
1
投票

在第一种情况下,您不在字符串escape上应用original函数。在第二种情况下,由于escape函数的第二行而改变了

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

以上行与

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

而第二部分\\\'将成为\'

© www.soinside.com 2019 - 2024. All rights reserved.