数据类型 null,undefined,bool和string
null vs undefined
相同点:
- 都表示“空”
- 在转换为 bool 时都表示 false, null == undefined
不同点:
- Number(null) = 0
- Number(undefined) = NaN
何时会出现undefined?
- 变量声明但未赋值
- 函数参数未传入(也是一种形参声明但未赋值)
- 访问对象不存在的属性
- 函数无返回值时,返回值是undefined
bool类型
如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。(比如if判断)
会被转为(认为)false的六个值:
- undefined
- null
- false
- 0 (这个要小心,经常会因为这个误判)
- NaN
- "" (空字符串是false, 但空数组,空对象是true)
string
转义字符 字符串处理涉及常见的转义字符,比如\t,\n,\r,\',\",\\
字符数组 字符串可以被视为一个字符数组,可以根据下标访问字符,也有length属性。
但是,这个字符数组无法根据下标直接改变元素
js
let a = 'hello'
console.log(a[1]) // 'e'
a[1] = 'h'
console.log(a) // 仍然是'hello'
delete a[1]
console.log(a) // 仍然是'hello'JS中涉及的字符集/字符编码
Unicode 字符集 JavaScript 使用 Unicode 字符集。JavaScript 引擎内部,所有字符都用 Unicode 表示。
Unicode 是一个字符集,支持包括多国字符以及表情符号字符, UTF-8 是 Unicode 的一种编码方式 ,它定义了如何将 Unicode 的字符编号(Code Point)转换为字节序列 ,以便在计算机中存储和传输。
Base64 所谓 Base64 就是一种编码方法,可以将任意值转成 0~9、A~Z、a-z、+和/这64个字符组成的可打印字符。使用它的主要目的,不是为了加密,而是为了不出现特殊字符,简化程序的处理, Base64编码完全是可逆的。
URI编码 也称为百分比编码,是一种将保留字符、不可打印字符或非ASCII字符转换为可以通过互联网传输的格式的方法,当我们的url中带有中文或特殊符号时,就被编码为 %加十六进制数
js
var string = 'Hello World!';
btoa(string) // "SGVsbG8gV29ybGQh"
atob('SGVsbG8gV29ybGQh') // "Hello World!"js
// 非ASCII字符需要用encodeURIComponent先处理
function b64Encode(str) {
return btoa(encodeURIComponent(str));
}
function b64Decode(str) {
return decodeURIComponent(atob(str));
}
b64Encode('你好') // "JUU0JUJEJUEwJUU1JUE1JUJE"
b64Decode('JUU0JUJEJUEwJUU1JUE1JUJE') // "你好"