function Foo() {
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();
如题,求大神解答,希望可以把原因写得很详细。
JS
在执行之前有一个编译阶段,在编译阶段主要:一、初始化用var
定义的变量为undefined
;二、初始化function
定义的函数。注意:两种定义函数的方式在编译阶段初始化的结果是完全不同的,比如:结合你的例子,实际上根据编译及执行的过程,可以将代码的顺序调整为: