js函数作用域的问题。

关于函数作用域有些地方没想明白,先贴上代码吧。
function Foo() {

getName = function () { alert (1); }

}
Foo();
getName();//1

function Foo() {

getName = function () { alert (1); }return window

}
Foo().getName();//1

function 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()这个的过程到底做了什么?今天看了很久都还是不太理解,


慕虎7371278
浏览 342回答 1
1回答

冉冉说

第三段代码执行Foo()后返回undefined undefined.getName()报错啊 你确定弹出了undefined?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript