首页 > 解决方案 > 有人可以向我解释这种行为吗?

问题描述

为什么在第一种情况下有反斜杠,而在第二种情况下有反斜杠?转义功能不应该改变任何东西吗?即使这是最合乎逻辑的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

解决方案


在第一种情况下,您没有escape在 string 上应用该函数original。在第二种情况下,它由于escape函数的第二行而改变

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

上面的行与

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

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


推荐阅读