我在babel的在线编译器中编译ES6function 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代码学习最佳实践,这样可行吗?
1 回答
慕雪6442864
TA贡献1812条经验 获得超5个赞
显而易见,这样是不能拿来学习ES5的,不过作为扩展眼界也是一种不错的选择。
编译出来的代码之所以复杂,是因为其要做到类似于ES6中的功能
lz的ES6代码的功能有
函数内作用域let
扩展运算符
console在作用域下输出
但是,let和扩展运算符在ES5中并没有,需要用其他方式去实现,
function push() {
var _console; // 此处_console,包括下面的apply是用于console的作用域内隐式let
// arguments 是为了完成扩展运算符
(_console = console).log.apply(_console, arguments);
}
添加回答
举报
0/150
提交
取消