JavaScript:是否必须对正则表达式和对象上的变音符号进行转义?

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

我正在准备一些JavaScript文件以进行生产,并且我正试图尽可能减小它们的大小,我具有以下功能:

function toAscii(txt) {
  var map = {'á':'a','à':'a','â':'a','ã':'a','ä':'a','å':'a','è':'e','é':'e','ê':'e','ë':'e','ì':'i','í':'i','î':'i','ï':'i','ò':'o','ó':'o','ô':'o','õ':'o','ö':'o','ø':'o','ù':'u','ú':'u','û':'u','ü':'u'};
  return txt.replace(/[áàâãäåèéêëìíîïòóôõöøùúûü]/g, function (m) {return map[m];}); 
}

但是当我用一个不错的软件Google Closure对其进行编译时,它的Unicode转义了正则表达式和对象

function toAscii(a){var b={"\u00e1":"a","\u00e0":"a","\u00e2":"a","\u00e3":"a","\u00e4":"a","\u00e5":"a","\u00e8":"e","\u00e9":"e","\u00ea":"e","\u00eb":"e","\u00ec":"i","\u00ed":"i","\u00ee":"i","\u00ef":"i","\u00f2":"o","\u00f3":"o","\u00f4":"o","\u00f5":"o","\u00f6":"o","\u00f8":"o","\u00f9":"u","\u00fa":"u","\u00fb":"u","\u00fc":"u"};return a.replace(/[\u00e1\u00e0\u00e2\u00e3\u00e4\u00e5\u00e8\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f2\u00f3\u00f4\u00f5\u00f6\u00f8\u00f9\u00fa\u00fb\u00fc]/g,function(a){return b[a]})};

我已经测试了未转义的代码是否有效,所以您认为有必要转义它吗?我读到它是可行的,因为HTML文档必须是<meta charset="utf-8">(我的情况)。但是无论我尝试希腊语,阿拉伯语,中文,ISO-8859-7GB2312ASMO_449,它始终有效。

那么为什么通常会逃脱呢?这是浏览器相关的问题吗?您会保留它的原始大小以减小文件大小吗?


PD:也许问题在于,如果您在任何时候使用编辑器来编辑没有正确编码的JS文件,都会破坏字符,对吗?如果这是唯一的问题,我认为不值得编码。

PD2:如果我在闭包编译器软件中应用--charset utf-8标志,它不会转义字符。

javascript regex unicode escaping google-closure-compiler
1个回答
0
投票

字符集选项记录在这里:

https://github.com/google/closure-compiler/wiki/Flags-and-Options#miscellaneous

-字符集VAL所有文件的输入和输出字符集。默认情况下,接受UTF-8作为输入和输出US_ASCII

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