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
相關文章
相關標籤/搜索