为什么找不到变量a

obj.foo不能访问xl内部的局部变量a, 但是把var ok = obj.foo,我的理解是把obj.foo的函数体定义给了ok,按理来说,这个时候OK函数,和我二张的图片里,直接定义OK函数,理论上是一样的把,为啥结果不同

这种方式不能访问a 
https://img3.mukewang.com/5c4eac360001f67704780421.jpg

而下面的又可行

https://img3.mukewang.com/5c4eac3c0001cb0c05790490.jpg

慕的地8271018
浏览 703回答 1
1回答

手掌心

x1方法中定义的a是局部变量,在x1函数内部可以访问,外部是访问不到的,在调用ok()方法,该方法中没有定义a变量,然后到全局环境中查找,很显然也找不到。你可以把var a = '11',修改为a = '11',去掉var。a就变为全局变量,foo方法中就可以访问到了。下面的为什么可行?执行ok()方法的时候,首先找自己执行环境中的a,没有找到,因为你的ok函数式定义在x1()中的,所以会再去x1()函数的执行环境中查找,在x1()的执行环境中,找到了a。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript