一段ES6代码在chrome执行后得到的结果 和 babel编译成ES5代码执行后得到的结果不一样,想知道什么原因,求大佬解惑。

首先是ES6代码

  var x = 1;
    function foo(x, y = function() { x = 2; }) {
      var x = 3;
      y();
      console.log(x);
    }
    
    foo();

上述代码在chrome运行 打印的是3.

此段ES6代码编译成ES5时,如下图所示

var x = 1;
function foo(x) {
  var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {
    x = 2;
  };

  var x = 3;
  y();
  console.log(x);
}

foo();

此段ES5代码执行后 打印的是2

为什么会不一样呢 求教。

阅读 2.1k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进