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

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

現(xiàn)在瀏覽器都支持es6嗎

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

現(xiàn)在瀏覽器都支持es6嗎

php入門到就業(yè)線上直播課:進(jìn)入學(xué)習(xí)
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調(diào)試工具:點(diǎn)擊使用

本教程操作環(huán)境:windows7系統(tǒng)、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

詳細(xì)各個瀏覽器對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下運(yùn)行呢,還是babel,提供了有效的解決辦法

引入兩個腳本:

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

該腳本轉(zhuǎn)換的是es6語法層面的語句

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

該腳本轉(zhuǎn)換了新語法的API,比如Set Map Promise等的方法

標(biāo)記腳本塊的 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>
登錄后復(fù)制

那么這里有兩個困惑:

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

第二:polyfill到底干了什么

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

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

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);   }   //執(zhí)行   for (i in scripts) {     run(scripts[i], i);   }    exec(); };
登錄后復(fù)制

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

獲取頁面上標(biāo)記為以上三項的腳步,然后用transform庫進(jìn)行加載和翻譯成ES5進(jìn)行執(zhí)行。

那么polyfill又干了什么呢,繼續(xù)閱讀代碼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;   }; };
登錄后復(fù)制

可以發(fā)現(xiàn)ployfill給Arrary添加了很多新方法,比如createArrayReduce就是實現(xiàn)reduce用的。

注意

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

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

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
久久精品超碰| 国产伦精品一区二区三区千人斩| 国产乱码精品一区二区亚洲| 日韩中文字幕无砖| 国产一区亚洲| 91成人超碰| 黄色在线一区| 激情91久久| 日本 国产 欧美色综合| 视频一区在线视频| 亚洲欧洲日韩精品在线| 日韩欧美美女在线观看| 国产探花在线精品| 国产精品免费大片| 精品福利久久久| 欧洲一区二区三区精品| 91精品一区国产高清在线gif| 欧美日韩一二三四| 日韩视频一区| 亚洲一区二区三区四区五区午夜| 蜜桃久久av一区| 国产精品一区二区三区av| 精品国产亚洲日本| 欧美日韩在线二区| 亚洲理论在线| 日本午夜精品| 国产一区二区三区日韩精品| 秋霞国产精品| 国产亚洲精品久久久久婷婷瑜伽| 天堂va欧美ⅴa亚洲va一国产| 国产精品久久久免费| 亚洲一级少妇| 免播放器亚洲一区| 国产黄色一区| 日韩国产欧美一区二区| 黄色精品网站| 国产乱码精品一区二区三区四区| 欧美www视频在线观看| 在线精品视频在线观看高清| 综合欧美亚洲| 国产精品二区不卡| 亚洲免费中文| 六月丁香综合在线视频| 欧美综合另类| 久久国产生活片100| 99成人在线视频| 69堂免费精品视频在线播放| 亚洲成人精品| 国产美女亚洲精品7777| 天堂网av成人| 视频一区日韩| 欧美91福利在线观看| 国产亚洲人成a在线v网站 | 高清不卡亚洲| 日韩精品一区二区三区中文 | 日韩精品亚洲专区在线观看| 伊人久久国产| 国产伦精品一区二区三区千人斩| 黑丝一区二区| 亚洲精品国产嫩草在线观看| 亚洲精品激情| 久久精品国产www456c0m| 久久国产麻豆精品| 免费成人av在线播放| 久久国产亚洲| 精品亚洲a∨| 日韩精品午夜视频| 99国产精品久久久久久久| 国产一区二区三区天码| 欧美日韩精品一区二区三区视频| 精品91久久久久| 99视频精品全国免费| 国产精品蜜芽在线观看| 久久av电影| 久久国产欧美日韩精品| 亚洲一区欧美激情| 日韩在线精品| 精品一区二区三区亚洲| 日本免费在线视频不卡一不卡二| 9色精品在线| www成人在线视频| 亚洲精品福利电影| 黄色欧美在线| 久久超级碰碰| 国产精品久久久久77777丨| 亚洲另类黄色| 亚洲精品看片| 日韩av影院| 啪啪亚洲精品| 日韩高清在线不卡| 亚洲伊人精品酒店| 另类激情亚洲| 欧美+日本+国产+在线a∨观看| 成人国产精品久久| 国产图片一区| 国产精品久久久久久久久久久久久久久| 日本成人在线视频网站| 免费人成精品欧美精品 | 国产精品日韩精品在线播放| 18国产精品| 国产日韩一区二区三区在线 | 亚洲综合日韩| 天堂va蜜桃一区二区三区| 亚洲一区日本| 日韩在线网址| 欧美日韩精品一区二区三区视频| 91成人精品观看| 国产精品视频一区二区三区| 国产精品99精品一区二区三区∴ | 精品美女在线视频| 国产精品成人a在线观看| 国产一区二区三区不卡视频网站 | 亚洲黄色影院| 亚洲精品国模| 久久精品xxxxx| 日韩午夜视频在线| 日韩av中文在线观看| 国产福利一区二区三区在线播放| 精品一区电影| 99久久精品费精品国产| 香蕉成人久久| 国产视频网站一区二区三区| 欧美国产日本| 香蕉成人av| 亚洲综合三区| 国产精品黄色| 色爱av综合网| 视频一区中文字幕国产| 日韩精品中文字幕一区二区| 国产探花一区在线观看| 久久精品天堂| 性欧美xxxx免费岛国不卡电影| 久久国产精品久久久久久电车 | 亚洲乱码一区| 欧美国产另类| 99精品视频在线| 日韩国产欧美视频| 欧美丰满日韩| 免费一区二区视频| 精品国产亚洲日本| 一本一本久久| 国产精品久久久久久妇女| 999久久久国产精品| 蜜桃视频第一区免费观看| 国产精品伦一区二区| 久久视频精品| 欧美精品中文| 久久网站免费观看| 91精品国产自产在线丝袜啪| 日本免费久久| 欧美日一区二区三区在线观看国产免 | 国内精品麻豆美女在线播放视频| 精品捆绑调教一区二区三区 | 欧美精品日日操| 亚洲麻豆一区| 精精国产xxxx视频在线野外| 日韩一区二区三免费高清在线观看| 国产成人久久精品麻豆二区 | 亚洲欧美激情诱惑| 美女久久99| 免费精品视频最新在线| 欧美丰满日韩| 日韩动漫一区| 久久影院一区| 国产精品啊v在线| 免费视频久久| 欧美成人a交片免费看| 婷婷五月色综合香五月| 国产91精品对白在线播放| 欧美国产另类| 日韩不卡一区二区三区 | 久久久成人网| 久久只有精品| 亚洲精品三级| 91久久久精品国产| bbw在线视频| 国产精品一区二区三区四区在线观看| 欧美成人综合| 欧美国产极品| 日韩精品三级| 亚洲欧美日本视频在线观看| 91免费精品| 欧美韩一区二区| 日韩精品免费视频人成| 日本在线高清| 久久久久97| 国产精品夜夜夜| 亚洲+小说+欧美+激情+另类| 最新亚洲一区| 久久视频一区| 神马久久午夜| 国产成人精品一区二区三区免费| 视频在线观看国产精品| 亚洲欧美综合| 午夜欧美巨大性欧美巨大| 久久只有精品| 精品欧美日韩精品| 欧美黑人巨大videos精品| 国产精品一区二区三区www| 亚洲+小说+欧美+激情+另类|