记录一下有关闭包的面试题

function fun(n,o) {
    
    
  console.log(o)
  return {
    
    
    fun:function(m){
    
    
      return fun(m,n);
    }
  };
}
var a = fun(0);  a.fun(1);  a.fun(2);  a.fun(3);//undefined,?,?,?
var b = fun(0).fun(1).fun(2).fun(3);//undefined,?,?,?
var c = fun(0).fun(1);  c.fun(2);  c.fun(3);//undefined,?,?,?
//问:三行a,b,c的输出分别是什么?
function Foo() {
    
    
    getName = function () {
    
     alert (1); };
    return this;
}
Foo.getName = function () {
    
     alert (2);};
Foo.prototype.getName = function () {
    
     alert (3);};
var getName = function () {
    
     alert (4);};
function getName() {
    
     alert (5);}

//答案:
Foo.getName();//2
getName();//4
Foo().getName();//1
getName();//1
new Foo.getName();//2
new Foo().getName();//3
new new Foo().getName();//3

解析:
第一题的是 return 出的fun 是最外层的fun

第二题 解析
在这里插入图片描述

更详细的可以看这里
https://blog.csdn.net/deqi4006/article/details/102445587

猜你喜欢

转载自blog.csdn.net/Beth__hui/article/details/114128215