为了账号安全,请及时绑定邮箱和手机立即绑定

刚刚看阮一峰的ES6文章时,产生了一个疑问,关于函数参数默认值作用域的。

刚刚看阮一峰的ES6文章时,产生了一个疑问,关于函数参数默认值作用域的。

慕桂英4014372 2018-12-14 19:22:13
第一段: var x = 3第二段: x = 3针对这种不同,阮老师给出的解释是这样的:大家是如何理解第一种情况的?参考地址:ECMAScript 6 入门
查看完整描述

1 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

参数自己整体是一个“块”,仅此而已。你通过断点单步搞明白代码执行的流程,剩下的就是 闭包行为 ,变量名“逐级向上”,直到 global 。扯那么多没用的 ……

debugger;

var x = 1;

var a = 999;

function foo(x,

             y =

               function() {

                 debugger;

                 console.log(x)  // 12

                 x = 22;

                 console.log(a) // 999

                 a = 8;

                 console.log(a) // 8

                 z = 123;

                 return function(){ return x }

               }

               )

{

  debugger;

  var x = 3;

  var a = 0;

  var f = y();

  console.log(f()); // 22

  console.log(x);  // 3

}


foo(12)

console.log(x) // 1

console.log(a) // 8

console.log(global.z) // 123


查看完整回答
反对 回复 2019-01-09
  • 1 回答
  • 0 关注
  • 503 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信