ES6编译出的ES5代码怎么理解

我在babel的在线编译器中编译ES6

function push( ...args){
  console.log(...args)

}
push(1,2,3)

编出来的结果:

"use strict";

function push() {
  var _console;

  (_console = console).log.apply(_console, arguments);
}
push(1, 2, 3);

我的问题是为什么这里把console.log写的这么复杂?编译出来的代码一定是比较推荐的写法吧,靠学习编译出的ES5代码学习最佳实践,这样可行吗?

阅读 2.4k
1 个回答

显而易见,这样是不能拿来学习ES5的,不过作为扩展眼界也是一种不错的选择。
编译出来的代码之所以复杂,是因为其要做到类似于ES6中的功能
lz的ES6代码的功能有

  1. 函数内作用域let
  2. 扩展运算符
  3. console在作用域下输出

但是,let和扩展运算符在ES5中并没有,需要用其他方式去实现,

function push() {
  var _console; // 此处_console,包括下面的apply是用于console的作用域内隐式let
    // arguments 是为了完成扩展运算符
  (_console = console).log.apply(_console, arguments);
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题