关于函数作用域有些地方没想明白,先贴上代码吧。function Foo() {getName = function () { alert (1); }}Foo();getName();//1function Foo() {getName = function () { alert (1); }return window}Foo().getName();//1function Foo() {getName = function () { alert (1); }}Foo().getName();//报错首先是三段代码都是一个类型,1.第一个我的理解就是在全局执行Foo()后在全局中也就是window中创建了一个变量getName并将function () { alert (1); }赋值给他。之后在全局中调用这个函数得到1. 2.第二段代码代码是连着写的,内容基本能看懂,还是先在全局中创建了变量,赋值。然后返回一个值window。之后相当于window。getName().得到1. 3,第三段代码我就没搞懂了,首先foo执行之后还是能在全局中创建变量赋值。然后Foo函数执行完退出函数的执行环境,之后交给之前的执行环境window。然后调用getName,我的理解的话也是1. 我知道肯定有地方不对,不是人家也不会用return window。我现在主要不理解的是为啥要return window,还有 Foo().getName()这个的过程到底做了什么?今天看了很久都还是不太理解,
添加回答
举报
0/150
提交
取消