本文为读 lodash 源码的第三百二十篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
escape 会对 & 、< 、> 、" 和 ' 这些 HTML 实体进行编码。
源码如下:
const htmlEscapes = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": '''
}
const reUnescapedHtml = /[&<>"']/g
const reHasUnescapedHtml = RegExp(reUnescapedHtml.source)
function escape(string) {
return (string && reHasUnescapedHtml.test(string))
? string.replace(reUnescapedHtml, (chr) => htmlEscapes[chr])
: (string || '')
}htmlEscapes 用来建立 HTML 实体和编码之间的映射。
reHasUnescapedHtml 用来检测字符串中是否有未编码实体的正则。
所以只需要用 reHasUnescapedHtml 正则来检测字符串,如果含有未编码的 HTML 实体,则调用字符串的 replace 方法,将字符串中的实体替换成编码。
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见: 
作者:对角另一面