我有一个具有如下属性的对象:
var RouteMetaSet = {
'\/user-management\/users': {
path: '/user-management/users',
name: 'User Management',
iconClassList: ['fa', 'fa-user'],
}
};我可以很容易地得到这样的属性的值:
console.log(RouteMetaSet['\/user-management\/users'])但是,如果我将键赋给一个变量,然后将其推入括号中,这是不可能的。
var originialString = /user-management/users;
var escapedString = originialString.replace(/[-/<>*()?]/g, "\\$&"); // it should be "\/user-management\/users"
console.log(RouteMetaSet[escapedString]); // undefined在这点上我错了吗?
发布于 2018-05-28 18:39:04
第一。这是:
originialString =/用户管理/用户;
…只是语法错误。
必须引用JS中的字符串文字。
下一步:
转义字符在JavaScript 源代码中有意义。
当字符串文本被JavaScript引擎解析时,它将被转换为字符串。在此过程中,将使用转义字符。
他们根本不是数据的一部分。如果插入带有正则表达式的斜杠,则只是将斜杠(而不是转义序列)插入到字符串中。
var RouteMetaSet = {
'\/user-management\/users': {
path: '/user-management/users',
name: 'User Management',
iconClassList: ['fa', 'fa-user'],
}
};
var originialString = "/user-management/users";
console.log(RouteMetaSet[originialString]);
旁白:/字符不需要在JS字符串文本中转义,除非它在内联脚本中形成序列</script>的一部分。
生成的代码通常转义所有/字符,作为避免该问题的一种简单有效的方法。
如果属性名包含确实需要转义的字符(如\),那么,在解析字符串时,对其做任何明智的操作都为时已晚。
var originalString = "Example\t";它应该是一个制表符,还是应该是一个\,然后是一个t?
如果您一开始就不能相信代码是正确的,那么您就有了一个问题。
https://stackoverflow.com/questions/50571918
复制相似问题