当 charAt 遇上 Emoji
参考: stackoverflow – How to get first character of string?
我们经常会用 charAt(0) 来获取 first character. 这个用在 ASCII 是完全没有问题的. 但是如果遇到 Unicode 的话, 很有可能会翻车.
const text = '👍';
console.log(text.charAt(0));
console.log(Array.from(text)[0]);
效果
所以当遇上 Unicode 的话记得改用 Array.from 哦.
当 flatMap 遇上 not array
const values = [[1, 2, 3], [4, 5, 6]].flatMap(v => v); // [1,2,3,4,5,6]
flatMap 的功能是打平 array, 但如果里面有一个不是 array 呢?
const values = [[1, 2, 3], [4, 5, 6], 'not array'].flatMap(v => v); // [1,2,3,4,5,6, 'not array']
它会原封不动的返回.
那如果是一个 iterator 呢? 它会不会聪明的当 array 处理?
function* generator() {
yield 1;
yield 2;
yield 3;
}
const iterator = generator();
const values = [[1, 2, 3], [4, 5, 6], iterator].flatMap(v => v); // [1,2,3,4,5,6,iterator]
console.log(values[values.length - 1] === iterator); // true
是不会的哦.
encodeURI 和 encodeURIComponent 的区别
参考: 知乎 – escape,encodeURI,encodeURIComponent有什么区别?
encodeURI 不会对 ~!@#$&*()=:/,;?+’ 进行编码
encodeURIComponent 方法不会对 ~!*()’ 进行编码
用法
如果我们想 encode “full URI” 那就用 encodeURI.
比如
encodeURI('https://www.stooges.com.my/a b'); // https://www.stooges.com.my/a%20b
encodeURIComponent('https://www.stooges.com.my/a b') // https%3A%2F%2Fwww.stooges.com.my%2Fa%20b
encodeURI 编码后的 value 依然是一个 URI, 但 encodeURIComponent 就完全不是了.
encodeURIComponent 的 Component 指的是组件. 也就是 part of the URI.
顾名思义, 它的用法就是针对某一个区域做 encode.
const example1 = https://www.stooges.com.my/${encodeURIComponent('a b')}
; // https://www.stooges.com.my/a%20b
const example2 = https://www.stooges.com.my?key=${encodeURIComponent('ok?')}
; // https://www.stooges.com.my?key=ok%3F
都是 encode 整个 URI 里的某一部分.
Original: https://www.cnblogs.com/keatkeat/p/16393847.html
Author: 兴杰
Title: JavaScript – 冷知识 (新手)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/535826/
转载文章受原作者版权保护。转载请注明原作者出处!