ES6 笔记

现状最佳实践  ES5_jQ前  + ES6_React后   (浏览器)   ,   ios

① TS 太像 C# ,只看DENO成败。正则表达式

② Kotlin => JS 这种隔山打牛方式,估计不能彻底抛弃 JS 。优点在于 Spring Boot 和 Android App(不是安卓)小程序

③ Go Rust 的 WASM 技术 目前来说,性价比过低,还不如 GraphQL 带来的收益。windows

  无论怎么说 Go 是"互联网"版本的 erlang ,DEVOPS 和 Cloud革命 DSL语言。net/http=>netty ,io基于stream,crypto微信小程序

④ 另外一条路  Flutter(uwp都投靠了)专吃移动端 => 肛的是 RN  ,这是 F 和 G 家的广告之战。PC门户 和 后台 仍然没有大一统,因此须要 ES5 和 ES6。浏览器

  PC 端是很是难统一的,百度都来了搞 兼容IE8的框架,可见一斑。微信

⑤ 最后国内现状  微信小程序 微信H5页面 ,都须要 ES5 和 ES6 。     (到这里,取决于作什么产品,后台固然能够 React ,门户就算了。)框架

⑥ Swift/Kotlin/C#/Dart 平台 原生渲染最佳,因此 Electron 适合业务/小工具,从业务量来说  ♥ 微信小程序 ♥ > H5游戏 > 安卓游戏 > ios游戏 > windows游戏 。函数

 

…………………………………………………………………………………………………………………………………………………………………………………………………………工具

  

变量 (使用 var 能够跨越窗口或帧 让全局对象访问到,使用 const let 不会污染全局做用域)

ES6 以前 , JS 的词法做用域的 变量提高 会把变量顶到函数/全局的顶部。

var funcs = [];
for (var i = 0; i < 10; i++) {
    funcs.push(function() { console.log(i); });
}
funcs.forEach(function(func) {
    func(); // 输出数值 "10" 十次    变量提高后 i 在context内部均可见,每次迭代都共享了 i 。
});

Ⅰ解决方式引入 IIFE 当即调用函数表达式 ,利用了传参 【值拷贝】

Ⅱ 引入块级做用域:let 和 const     根据规范定义 let 和 const 从新建立了 变量绑定(副本)。

 

使用 const 声明对象    ==   final 对象

 

temporal dead zone  社区给TDZ一个名字 叫暂时性死区。== 其实就是【变量脱离块级做用域】 是默认值是系统定义的 underfined ,没脱离则受 let const 影响。

………………………………………………………………………………………………………………………………………………………………………… 

变化。

 

ES6 UTF-16 = BMP + SP = 单个16位码元不够标识 + 扩展码元    合计4字节

底层单位 Code Unit  16位码元 = BMP范围内(\u0000~\uffff)         适用API   length/charAt/charCodeAt

扩展单位 Code Point  =  两个码元                      API codePointAt

 

var s = "𠮷";

s.length // 2
s.charAt(0) // ''   
s.charAt(1) // ''
s.charCodeAt(0) // 55362  第一个码元
s.charCodeAt(1) // 57271  第二个码元
let s = '𠮷a';

s.codePointAt(0) // 134071   第一个代码点  =   两个码元组成标识   证实 String.fromCodePoint(13471) 就是 𠮷
s.codePointAt(1) // 57271 第一个代码点 的 第二个码元   s.codePointAt(2) // 97 第二个码元 

 

字符串6种表示法

'\z' === 'z'  // true
'\172' === 'z' // true
'\x7A' === 'z' // true
'\u007A' === 'z' // true
'\u{7A}' === 'z' // true

 

比较大小问题   怎么排序?使用  normalize方法

 

1、 把每一个字符串内容用map方法 normalize 一遍 , 再比较

var normalized = values.map(function(text) {
    return text.normalize();
});
    normalized.sort(function(first, second) {
if (first < second) {
    return -1;
} else if (first === second) {
    return 0;
} else {
    return 1;
}
});

 

2、直接将值 normalize 后比较,注重排序后的结果集。

values.sort(function(first, second) {
    var firstNormalized = first.normalize(),
    secondNormalized = second.normalize();
    if (firstNormalized < secondNormalized) {
    return -1;
} else if (firstNormalized === secondNormalized) {
    return 0;
} else {
    return 1;
}
});

 

normalize(四种模式)

NFC  NFD     NFKC   NFKD 怎么理解 (本身猜测,未经证明,实际根据业务选择 )

Canonical 根据规范相等         a=b  b=a 根据规范能够互换

Compatibility 兼容         a 也能够  b  也能够 强调兼容

Composition 合成         ae  æ    能够是黏在一块儿的,确实有的字是合成的 好比 陶喆 的 喆。

Decomposition 分解     ae   ae  

 

正则表达式 固然也要跟着 code point 转~~

console.log(/^.$/u.test('𠮷')); // true
相关文章
相关标签/搜索