如图所示,为什么嵌套函数里不能修改外部函数里变量的值呢?

http://img4.mukewang.com/6435169600017b7106560352.jpg

第一种张图, 为什么 第一次console.log(idnex) 输出的是0 , 第二次是undefined

http://img3.mukewang.com/643516b00001d9eb06320438.jpg

第二种张图, 为什么 第一次console.log(idnex) 输出的是0 , 第二次是app object

谢谢!


浮云间
浏览 117回答 2
2回答

慕运维8079593

第一种张图, 为什么 第一次console.log(idnex) 输出的是0 , 第二次是undefined第一次输出是最外层函数中的console.log(index)的输出结果, 内层函数myfunction只被定义没有调用,输出的undefine是最外层匿名函数(function(){...})()的返回值, 你没有指定返回值,所以是undefined.第二种张图, 为什么 第一次console.log(idnex) 输出的是0 , 第二次是app object类似, 第一次输出是实例app的时候调用的, 第二次输出是语句new app()会返回一个app对象实例.如果你是想验证closure行为的话, 建议这样改:(function(){&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;index&nbsp;=&nbsp;0 &nbsp;&nbsp;&nbsp;&nbsp;foo&nbsp;=&nbsp;function(){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;+=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(index); &nbsp;&nbsp;&nbsp;&nbsp;}; })();for(var&nbsp;i=0;&nbsp;i<10;&nbsp;i++){ &nbsp;&nbsp;&nbsp;&nbsp;foo(); }console.log(index);&nbsp;&nbsp;//ReferenceError:&nbsp;index&nbsp;is&nbsp;not&nbsp;defined

ITMISS

第一,里面的那个函数只是定义了,你压根就没执行第二,下面的那个输出的值,是函数的返回值,控制台自动输出的
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript