日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ES6解决了什么问题

發(fā)布時間:2025/3/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ES6解决了什么问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ECMAScript 6.0于2015 年 6 月正式發(fā)布了,成為JavaScript 語言的下一代標準。ES6增加的語言特性解決了哪些問題,會給開發(fā)者哪些便利,是本文主要探討的問題。

增加了對unicode字符的支持

ES5對字符的處理有限,無法很好地處理碼點大于0xFFFF的字符。

ES6在string原生方法中支持碼點大于0xFFFF的字符,取得碼點或是遍歷,都可以直接操作;并且對字符不同的表示方法做了統(tǒng)一化。

在正則表達式里新增\u \s修飾符,使得正則對特殊字符的匹配不需要開發(fā)者額外處理。

異步編程

ES6 前異步編程的解決方式:

  • 回調函數(shù)
  • 事件監(jiān)聽
  • 發(fā)布/訂閱
  • 自定義promise

Promise

ES6提供了原生的Promise對象,統(tǒng)一了用法和標準。

  • 對象的狀態(tài)不受外界影響。能夠方便地獲取異步操作的狀態(tài)、賦予對應操作。
  • 一旦狀態(tài)改變,就不會再變,任何時候都可以得到這個結果。

缺點

  • 無法取消Promise,一旦新建它就會立即執(zhí)行,無法中途取消。
  • 如果不設置回調函數(shù),或在catch中再次拋出錯誤。Promise內部拋出的錯誤,不會反應到外部。
  • 當處于pending狀態(tài)時,無法得知目前進展到哪一個階段(剛剛開始還是即將完成)。

Generator

Generator 函數(shù)形式上與普通函數(shù)無異,特征有二

  • function關鍵字與函數(shù)名之間有一個星號;
  • 函數(shù)體內部使用yield表達式,來表明函數(shù)執(zhí)行的狀態(tài)。
  • 意義:

    • 可以交出函數(shù)的執(zhí)行權(即暫停執(zhí)行)
    • 函數(shù)體內外的數(shù)據(jù)交換

      可以在 Generator 函數(shù)運行的不同階段,調整函數(shù)行為。包括從外部向內部注入不同的值,控制返回和拋出錯誤。

    async

    (ES2017 標準引入)

    從理解上來說, async函數(shù)相當于把Generator 函數(shù)的星號(*)替換成async,將yield替換成await。

    但相比較generate而言,內置執(zhí)行器,有更易于理解的語義。

    async函數(shù)返回一個 Promise 對象,可以使用then方法添加回調函數(shù)。async函數(shù)內部return語句返回的值,會成為then方法回調函數(shù)的參數(shù)。

    當函數(shù)執(zhí)行的時候,一旦遇到await就會先返回,等到異步操作完成,再接著執(zhí)行函數(shù)體內后面的語句。

    減少全局變量和方法

    比如,ES6 將全局方法parseInt()和parseFloat(),移植到Number對象上面。 逐步減少全局性方法,使得語言逐步模塊化。

    代碼作用域

    變量的聲明方式

    增加let, const的變量聲明方式,不存在變量提升,不允許重復聲明,使語言使用更加嚴謹。

    塊級作用域

    使得變量的作用域更利于管理,也使得立即執(zhí)行函數(shù)表達式不再必要了。

    箭頭函數(shù)

    讓this綁定定義時所在的作用域,而不是指向運行時所在的作用域,也使得表達更加簡潔。

    語法糖

    ES6推出了模版字符串,使得多行字符串及夾雜變量的字符串寫起來更加方便。

    對象增加屬性名表達式與簡潔表示法。

    增加遍歷器機制,為各種不同的數(shù)據(jù)結構提供統(tǒng)一的訪問機制。

    增加解構的語法,取值更直觀方便。

    增加class關鍵字來定義類,過去,生成實例對象的傳統(tǒng)方法是通過構造函數(shù)。不再和傳統(tǒng)面向對象語言有大的差異。且支持extends。

    元編程

    引入Proxy對象,可以攔截某些操作并實現(xiàn)自定義行為。

    引入 Rflect對象,可以獲取默認操作,可以將默認操作從處理程序轉發(fā)到目標。

    Symbol

    symbol 是一種基本數(shù)據(jù)類型 ,提供一種機制,保證每個屬性的名字都是獨一無二,從根本上防止屬性名的沖突。

    更多的原生方法

    ES6提供了更多的原生方法,避免了開發(fā)者重復造輪子。如字符串的查找。

    • 正則的匹配規(guī)則,如新加的y、s修飾符。
    • 增加了set、map的數(shù)據(jù)結構。
    • 增加Number.EPSILON等數(shù)值方法,使得對數(shù)值操作易于在精度方面進行控制。
      //雖然JavaScript 不適合進行科學和金融方面的精確計算
    • 增加對對象的操作與讀取的API。

    優(yōu)化

    對尾遞歸進行優(yōu)化,賦予javscript運行復雜度更高的方法的能力。


    參考

    ECMAScript 6 入門

    總結

    以上是生活随笔為你收集整理的ES6解决了什么问题的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。