这样写为什么就变成 2 4 4 4 2 3 3了,有点没转过来弯

来源:7-2 一道函数考察基本功

慕勒2048820

2019-03-24

function Foo() {
	var getName = function () {console.log(1)}
	return this
}
Foo.getName = function () {console.log(2)}
Foo.prototype.getName = function () {console.log(3)}
var getName = function () {console.log(4)}
function getName() {console.log(5)}

Foo.getName()
getName()
Foo().getName()
getName()
new Foo.getName()
new Foo().getName()
new new Foo().getName()
写回答

2回答

慕瓜2537602

2025-04-07

Foo() 这个函数里面的getName是有var的,所以这个是一个局部变量,函数return 返回的this,将Foo()指向了window, 实际执行是Foo().getName() -> window.getName();第二步把getName()的时候已经是打印4了。

0
0

快乐动起来呀

2019-03-25

其实这个题目不难,都是函数执行首先要弄懂函数是什么?Foo.getName这个简单Foo.getName = function () {console.log(2)},所有首先输入2;然后是执行getName()这个时候作用域是window,所以var getName = function () {console.log(4)}是这个代码,输出4,以此类推试试看,结合视频再看看

0
0

前端跳槽面试必备技巧 面试官全流程指导

一门让你能成功获取前端 Offer 的课程, 不只是技术,面试“技巧”也至关重要

4836 学习 · 830 问题

查看课程