走过海棠暮

文章 0 评论 0 浏览 24

走过海棠暮 2022-05-04 13:46:48

@sandGuard 感谢,这真是对我莫大的肯定~

JavaScript深入之作用域链

走过海棠暮 2022-05-04 05:19:33

说说我的理解哦
es6比es5多出来的部分分两类
一类是语法,如箭头函数,解构;
一类是新的类、新的类方法、新的实例方法,如:Promise, Array.from, Array.prototype.find

babel在做语法转换的时候,通过抽象语法树来实现代码层面的翻译。
比如将
const fn = () => {
Array.isArray([1, 2, 3]);
};
转成
"use strict";
var fn = function fn() {
Array.isArray([1, 2, 3]);
};

对于新的类、类方法,实例方法,基本就是polyfill,或者polyfill加上代码转换。
拿Array.from来说,只需要使用es5的语法,自己实现一遍Array.from,就可以用不改动源代码而使用Array.from这个es6的api了,@babel/polyfill这个包就是做这事儿的。
复杂点的Promise在babel转译的时候,不仅会调整源代码,还需要引入@babel/polyfill。有时候会遇到regeneratorRuntime is not defined这个报错,原因是源代码中Promise部分被转译了,转译后用到的regeneratorRuntime在@babel/polyfill中,但@babel/polyfill没被引入。

第 66 题:ES6 代码转成 ES5 代码的实现思路是什么?

更多

推荐作者

離殇

文章 0 评论 0

小姐丶请自重

文章 0 评论 0

Aik

文章 0 评论 0

国产ˉ祖宗

文章 0 评论 0

猥琐帝

文章 0 评论 0

半仙

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文