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);
输出:
'莫拉';--'
'莫拉';--'
解决方案
在第一种情况下,您没有escape
在 string 上应用该函数original
。在第二种情况下,它由于escape
函数的第二行而改变
str = str.replace('\'', '\\\'')
上面的行与
str = str.replace("'", '\\\'').
第二部分\\\'
将变为\'
.
推荐阅读
- javascript - Laravel 和 Vue,vue-router 链接不起作用
- javascript - 我们可以对任何 Javascript 文件使用 System.import 或 import() 函数还是仅对单个模块特定的 js 使用?
- java - 为什么我不能实现多个接口?
- node.js - 如何在不使用 mongoose 和节点 js 在 mongodb 中插入不需要的字段数据的情况下创建文档?
- javascript - 图像地图为圆形区域设置背景图像
- .net - 如何使用 OrchardCore CMS 通过 GraphQL 从 MediaFields 获取所有内容?
- python - 通过传递坐标在棋盘上划出白色方块
- asp.net-core - 动态创建和销毁 Blazzor 客户端组件?
- ios - NSRangeException 由 String.subscript.getter
- python - 如何在python中的for循环函数的最后删除空格/跳转到下一行