字符串
-
概述
-
使用
''
或""
来包裹字符串,由于 HTML 语言的属性值使用双引号,所以很多项目约定 JavaScript 语言的字符串只使用单引号。 -
长字符串要分为多行书写,
-
可以在每一行的尾部使用反斜杠
\
,反斜杠的后面必须是换行符,而不能有其他字符。let a = 'a hhh\ hh\ aa'; // a为 "a hhhhhaa" let a = 'lalala\ lalala\ hahaha'; // a为"lalala lalala hahaha"
-
连接运算符(
+
)可以连接多个单行字符串,将长字符串拆成多行书写。a = 'haha' + 'lueluelue' + '123' // "hahalueluelue123"
-
-
-
转义字符:
\
。-
有
\uxxxx
转义为Unicode对应码点
-
如果在非特殊字符前面使用反斜杠,则反斜杠会被省略。
a = '\aa' // "aa"
-
-
字符串与数组
-
字符串是不可变的
a = 'abcd' a[0] = 'c' a // 'abcd' a = "aaa" a // "aaa",此时,只是修改了字符串的引用变量所指向的值
-
字符串可以被视为字符数组。
-
如果方括号中的数字超过字符串的长度,或者方括号中根本不是数字,则返回
undefined
。a = 'abcd' a[2] // "c" a[5] // undefined a['x'] // undefined a['0'] // "a"。个人认为此处应该是自动调用了Number()把'0'转换为了0,所以找到了a[0]的值。
-
length
属性返回字符串的长度,该属性也是无法改变的。
-
字符集
- JavaScript 使用 Unicode 字符集。
- 由于历史遗留原因,对于码点在
U+10000
到U+10FFFF
之间的字符,JavaScript 总是认为它们是两个字符(length
属性为2)。所以,JavaScript 返回的字符串长度可能是不正确的。
Base64
-
文本里面包含一些不可打印的符号,比如 ASCII 码0到31的符号都无法打印出来,这时可以使用 Base64 编码,将它们转成可以打印的字符。另一个场景是,有时需要以文本格式传递二进制数据,那么也可以使用 Base64 编码。
-
所谓 Base64 就是一种编码方法,可以将任意值转成 0~9、A~Z、a-z、
+
和/
这64个字符组成的可打印字符。使用它的主要目的,不是为了加密,而是为了不出现特殊字符,简化程序的处理。 -
btoa()
:任意值转为 Base64 编码 -
atob()
:Base64 编码转为原来的值 -
对于非 ASCII 码的字符,需要进行转码。
function b64Encode(str) { return btoa(encodeURIComponent(str)); } function b64Decode(str) { return decodeURIComponent(atob(str)); }