鍍金池/ 問答/HTML/ 一段ES6代碼在chrome執(zhí)行后得到的結(jié)果 和 babel編譯成ES5代碼執(zhí)行

一段ES6代碼在chrome執(zhí)行后得到的結(jié)果 和 babel編譯成ES5代碼執(zhí)行后得到的結(jié)果不一樣,想知道什么原因,求大佬解惑。

首先是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代碼執(zhí)行后 打印的是2

為什么會不一樣呢 求教。

回答
編輯回答
尤禮

關(guān)鍵在于函數(shù)默認(rèn)參數(shù)的作用域:
https://www.jianshu.com/p/8fe...

2018年3月27日 14:21