久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網
最全最豐富的資訊網站

現在瀏覽器都支持es6嗎

不是;ES6提供了許多新特性,但并不是所有的瀏覽器都能夠完美支持,例如IE7~11版本基本不支持ES6,而Edge12-14僅支持部分ES6新特性;對ES6新特性最友好的是Chrome和Firefox瀏覽器,Chrome51版起便可以支持97%的ES6新特性,Firefox53版起便可以支持97%的ES6新特性。

現在瀏覽器都支持es6嗎

php入門到就業線上直播課:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調試工具:點擊使用

本教程操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。

ES6 提供了許多新特性,但并不是所有的瀏覽器都能夠完美支持。好在目前各大瀏覽器自身也加快速度兼容 ES6 的新特性,其中對 ES6 新特性最友好的是 Chrome 和 Firefox 瀏覽器。

ES6語法對瀏覽器的兼容介紹

瀏覽器 不支持的版本 部分支持的版本 支持的版本
IE 6-10 11
Edge 12-14 15-18、79-87
Firefox 2-5 6-53 54-86
Chrome 4-20 21-50 51-90
Safari 3.1-7 7.1-9.1 10-13.1、14、TP
Opera 10-12.1 15-37 38-72
iOS Safari 3.2-6.1 7-9.3 10-13.7、14.2
Opera Mini all
Android Browser 2.1-4.3 4.4-4.4.4 81
Opera Mobile 12-12.1 59
Chrome for Android 87
Firefox for Android 83
UC Browser for Android 12.12
Samsung Internet 4 5-13.0
QQ Browser 10.4
Baidu Browser 7.12
KaiOS Browser 2.5

詳細各個瀏覽器對ES6的支持性,可查看https://caniuse.com/?search=es6

想要知道自己的瀏覽器是否支持ES6,可查看http://ruanyf.github.io/es-checker/index.cn.html

桌面端瀏覽器對ES2015的支持情況

  • Chrome:51 版起便可以支持 97% 的 ES6 新特性。

  • Firefox:53 版起便可以支持 97% 的 ES6 新特性。

  • Safari:10 版起便可以支持 99% 的 ES6 新特性。

  • IE:Edge 15可以支持 96% 的 ES6 新特性。

  • Edge 14 可以支持 93% 的 ES6 新特性。(IE7~11 基本不支持 ES6)

可以看到IE11又拖了后腿,對ES6徹底放棄,由Edge 來支撐它的未來。

IE11下有效兼容ES6

那么如何讓純ES6腳本在IE11下運行呢,還是babel,提供了有效的解決辦法

引入兩個腳本:

https://cdn.bootcss.com/babel-core/5.8.35/browser.min.js

該腳本轉換的是es6語法層面的語句

https://cdn.bootcss.com/babel-core/5.8.35/browser-polyfill.min.js

該腳本轉換了新語法的API,比如Set Map Promise等的方法

標記腳本塊的 type = "text/babel"

<!DOCTYPE html> <html>  <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <title>IE11 With ES6</title>     <script src="./browser-polyfill.min.js"></script>     <script src="./browser.min.js"></script>     <script type="text/babel">         const list = ['one', 'two', 'three'];         list.forEach((item, index) => {             alert(item + (index + 1));         });           let promise = new Promise(function (resolve, reject) {             alert('Promise');             resolve();         });          promise.then(function () {             alert('resolved.');         });           const items = new Set([1, 2, 3, 4, 5, 5, 5, 5]);         alert(items.size)           const map = new Map();          const k1 = ['a'];         const k2 = ['a'];          map.set(k1, 111).set(k2, 222);          alert(map.get(k2))      </script> </head>  <body>  </body>  </html>
登錄后復制

那么這里有兩個困惑:

第一:<script type="text/babel"> 和我們平時用的<script type="text/javascript">有什么區別。

第二:polyfill到底干了什么

我們分別來說明下,我們來看一個未壓縮的代碼:https://cdn.bootcss.com/babel-core/5.8.38/browser.js
發現如下幾個代碼片段:

//頁面加載后,執行runScripts方法 if (global.addEventListener) {   global.addEventListener("DOMContentLoaded", runScripts, false); } else if (global.attachEvent) {   global.attachEvent("onload", runScripts); }
登錄后復制

var runScripts = function runScripts() {   var scripts = [];   //識別類型   var types = ["text/ecmascript-6", "text/6to5", "text/babel", "module"];   var index = 0;    /**    * Transform and execute script. Ensures correct load order.    */    var exec = function exec() {     var param = scripts[index];     if (param instanceof Array) {       transform.run.apply(transform, param);       index++;       exec();     }   };    /**    * Load, transform, and execute all scripts.    */    var run = function run(script, i) {     var opts = {};      if (script.src) {       transform.load(script.src, function (param) {         scripts[i] = param;         exec();       }, opts, true);     } else {       opts.filename = "embedded";       scripts[i] = [script.innerHTML, opts];     }   };    // Collect scripts with Babel `types`.    var _scripts = global.document.getElementsByTagName("script");   //按照類別加載   for (var i = 0; i < _scripts.length; ++i) {     var _script = _scripts[i];     if (types.indexOf(_script.type) >= 0) scripts.push(_script);   }   //執行   for (i in scripts) {     run(scripts[i], i);   }    exec(); };
登錄后復制

我想我們關注的text/babel就在這里:var types = ["text/ecmascript-6", "text/6to5", "text/babel", "module"];

獲取頁面上標記為以上三項的腳步,然后用transform庫進行加載和翻譯成ES5進行執行。

那么polyfill又干了什么呢,繼續閱讀代碼https://cdn.bootcss.com/babel-core/5.8.38/browser-polyfill.js
同樣定位到一段代碼:

$export($export.P, 'Array', {   // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])   forEach: $.each = $.each || methodize(createArrayMethod(0)),   // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])   map: methodize(createArrayMethod(1)),   // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])   filter: methodize(createArrayMethod(2)),   // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])   some: methodize(createArrayMethod(3)),   // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])   every: methodize(createArrayMethod(4)),   // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])   reduce: createArrayReduce(false),   // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])   reduceRight: createArrayReduce(true),   // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])   indexOf: methodize(arrayIndexOf),   // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])   lastIndexOf: function(el, fromIndex /* = @[*-1] */){     var O      = toIObject(this)       , length = toLength(O.length)       , index  = length - 1;     if(arguments.length > 1)index = Math.min(index, toInteger(fromIndex));     if(index < 0)index = toLength(length + index);     for(;index >= 0; index--)if(index in O)if(O[index] === el)return index;     return -1;   } });   var createArrayReduce = function(isRight){   return function(callbackfn, memo){     aFunction(callbackfn);     var O      = IObject(this)       , length = toLength(O.length)       , index  = isRight ? length - 1 : 0       , i      = isRight ? -1 : 1;     if(arguments.length < 2)for(;;){       if(index in O){         memo = O[index];         index += i;         break;       }       index += i;       if(isRight ? index < 0 : length <= index){         throw TypeError('Reduce of empty array with no initial value');       }     }     for(;isRight ? index >= 0 : length > index; index += i)if(index in O){       memo = callbackfn(memo, O[index], index, this);     }     return memo;   }; };
登錄后復制

可以發現ployfill給Arrary添加了很多新方法,比如createArrayReduce就是實現reduce用的。

注意

引入以上兩個文件基本就解決了瀏覽器對ES6的大部分支持問題。

不過再次強調:即使使用了轉換工具,還是不建議在生產環境大量地使用瀏覽器對ES6支持度較低的新特性的特性。畢竟這是在線轉換后才執行的,效率比較低。而且隨著瀏覽器對ES6的支持的變化,這些轉換腳本也需要經常更新,勢必對后期的維護帶來影響。

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
美女国产一区二区三区| 国产欧美高清| 日韩1区在线| 国产一区二区三区不卡av | 91一区二区| 97在线精品| 都市激情国产精品| 福利一区在线| 日本蜜桃在线观看视频| 日韩欧美综合| 日韩在线卡一卡二| 激情综合网五月| 蜜桃tv一区二区三区| 夜夜精品视频| 天堂精品久久久久| 国产精品麻豆成人av电影艾秋 | 亚洲精品成人| 亚洲综合电影一区二区三区| 亚洲影视一区二区三区| 中文在线а√天堂| 日韩天堂av| 欧美精品二区| 欧美日韩国产在线观看网站| 综合激情五月婷婷| 中文字幕中文字幕精品| 国产精品115| 亚洲网站视频| 久久国内精品视频| 日韩免费看片| 日本在线观看不卡视频| 久久精品国产亚洲aⅴ| 91精品一区二区三区综合| 亚洲视频二区| 久久激情一区| 国产精品久久久久久久久久久久久久久| 国精品产品一区| 自拍自偷一区二区三区| 日韩一区二区三区在线看| 国产+成+人+亚洲欧洲在线| www成人在线视频| 欧美日韩中出| 亚洲欧美日韩精品一区二区| 美女视频一区在线观看| 亚洲欧美日本视频在线观看| 91青青国产在线观看精品| 在线国产日韩| 香蕉精品视频在线观看| 中文字幕成在线观看| 国产欧美二区| 国产探花在线精品| 欧美特黄一区| 亚洲精品一区二区妖精| 亚洲精品.com| 丝袜美腿诱惑一区二区三区| 欧美一区成人| 日韩毛片网站| 欧美日韩一区二区三区四区在线观看 | 精品五月天堂| 日韩av午夜在线观看| 日韩精品一级中文字幕精品视频免费观看 | 国产精品白丝一区二区三区| 中文字幕av一区二区三区人| 91久久久精品国产| 女人天堂亚洲aⅴ在线观看| 91精品精品| 日韩一区二区久久| 日韩午夜在线| 日韩精品国产精品| 亚洲精品观看| 日本久久一区| 久久不见久久见免费视频7| 欧美一级久久| 精品三级久久久| 日韩电影免费网址| 五月精品视频| 亚洲一二三区视频| 久久99久久人婷婷精品综合| 国产91在线播放精品| 亚洲国产一区二区三区在线播放| 日韩一区精品视频| 国产精品久久乐| 在线天堂中文资源最新版| 婷婷丁香综合| 国产剧情在线观看一区| 中文字幕人成乱码在线观看| 亚洲高清久久| 日本成人手机在线| 午夜久久中文| 日本亚洲最大的色成网站www| 精品国产美女a久久9999| 欧美 日韩 国产一区二区在线视频 | 午夜欧美精品久久久久久久| 精品一区二区三区视频在线播放 | 每日更新成人在线视频| 日韩av一二三| 欧美日韩在线观看视频小说| 亚洲ww精品| 伊伊综合在线| 欧美天堂在线| 午夜在线视频观看日韩17c| 精品亚洲a∨| 青草av.久久免费一区| 视频一区中文| 日本黄色精品| 国产精品一区二区三区四区在线观看 | 欧美综合国产| 国产精品毛片一区二区在线看| 日本91福利区| 鲁鲁在线中文| 国产精品最新| 欧美日韩激情| 亚洲不卡系列| 蜜臀国产一区| 你懂的国产精品永久在线| av在线资源| 中文无码日韩欧| 日韩欧美中文字幕电影| 1000部精品久久久久久久久| 国产精品啊啊啊| 日韩欧美高清一区二区三区| 伊人精品视频| 欧美日韩中文一区二区| 9999国产精品| 久久久久久婷| 久久精品国产亚洲一区二区三区| 国产日韩三级| 国产精品蜜月aⅴ在线| 欧美亚洲免费| 国产一区 二区| 你懂的国产精品永久在线| 毛片在线网站| 一区二区三区四区日本视频| 久久精品三级| 日韩亚洲一区在线| 欧美a级片一区| 日韩在线电影| 久久中文字幕av| 伊人久久大香线蕉av超碰演员| 国产精品久久久一区二区| 综合激情网站| 石原莉奈在线亚洲二区| 免费成人在线观看| 欧美一区二区三区免费看| 精品国产一区二区三区2021| 精品久久影院| 欧美日韩视频网站| 国产亚洲在线观看| 日本少妇精品亚洲第一区| 精品一二三区| 国产精品日本| 精品中文在线| 亚洲综合日本| 国产黄色精品| 亚洲黄色影院| 国产精品分类| 亚洲在线一区| 日产午夜精品一线二线三线| 五月精品视频| 久久精品女人| 日韩激情视频网站| 97欧美在线视频| 日韩一区二区三区精品| 丁香六月综合| 欧美日韩精品一区二区三区在线观看| 久久天堂av| 免费在线欧美黄色| 一区福利视频| 国产+成+人+亚洲欧洲在线| 亚洲天堂日韩在线| 久久久国产亚洲精品| 国产精品密蕾丝视频下载| 国产亚洲福利| 99久久精品国产亚洲精品| 国产经典一区| 国产欧美日韩免费观看| 免费观看不卡av| 国产成人精品免费视| 日日夜夜免费精品| 亚洲一区av| 综合激情五月婷婷| 三级欧美在线一区| 国产模特精品视频久久久久| 男女男精品视频网| 夜夜嗨网站十八久久| 成人午夜网址| 亚洲18在线| 亚洲精品少妇| 亚洲精品裸体| 中文不卡在线| 蜜桃久久av一区| 午夜久久美女| 红桃视频欧美| 亚洲一区日韩在线| 欧美jjzz| 不卡在线一区二区| 欧美精品一二| 亚洲成人三区| 美女黄网久久| 午夜亚洲福利在线老司机| 手机精品视频在线观看|