字符串
1. 概述
1.1 转义
反斜杠 \
在字符串中用于表示一些特殊的字符,又名:转义符。
一些特殊字符需要转义,如下:
\n
或\u000A
:换行符\'
或\u00027
:单引号\"
或\u00022
:双引号\\
或\u005C
:反斜杠\0
或\u0000
:null\b
或\u0008
:后退键\f
或\u000C
:换页符\r
或\u000D
:回车键\t
或\u0009
:制表符\v
或\u000B
:垂直制表符
例如:
console.log('a\nb')
// a
// b
console.log('a\tb') //a b
console.log('a\"b') //a"b
\
还有其他特殊用法:转义 八进制数
、十六进制数
'\251' // "©"
'\xA9' // "©"
'\u00A9' // "©"
'\172' === 'z' // true
'\x7A' === 'z' // true
'\u007A' === 'z' // true
\
后跟非特殊字符,会被省略。
console.log('\m'); // m
2.字符集
JavaScript
使用 Unicode
字符集。在 JavaScript
引擎内部,所有字符都用 Unicode
表示。
解析代码的时候,JavaScript
会自动识别字符的形式,如果是 Unicode
形式表示的,该字符会被转成字面形式。如下:
let \u004d\u006f\u006e\u0074\u0079 = 'me';
console.log(Monty); // me
3.Base64 转码
提到 Base64 转码,我们可能都用到过,也许您会去找一些库来实现需求,当然那些库都是很棒的!其实 JavaScript 原生也提供了两个和 Base64 相关的方法。
btoa()
:将任意值转换为 Base64 编码
这个方法在转换中文字符时(ASCII
)会有乱码的现象,使用之前需要对其转码。atob()
:解码 Base64 编码
const encode = (string) =>{
return btoa(encodeURIComponent(string));
}
const decode = (string) =>{
return decodeURIComponent(atob(string));
}
encode('你好,世界') // JUU0JUJEJUEwJUU1JUE1JUJEJUVGJUJDJThDJUU0JUI4JTk2JUU3JTk1JThD
decode('JUU0JUJEJUEwJUU1JUE1JUJEJUVGJUJDJThDJUU0JUI4JTk2JUU3JTk1JThD') // 你好,世界
// 如果转码 ASCII 时不先进行 encodeURIComponent 转码
btoa('你好,世界') //报错 :The string to be encoded contains characters outside of the Latin1 range.
atob('JUU0JUJEJUEwJUU1JUE1JUJEJUVGJUJDJThDJUU0JUI4JTk2JUU3JTk1JThD') // 乱码:"%E4%BD%A0%E5%A5%BD%EF%BC%8C%E4%B8%96%E7%95%8C"
有了这两个方法,Base64 转码就无需使用第三方了。