面试JS

1. 下面是考察JS的上下文环境中的变量以及函数提前问题:

console.log(a);
var a = 3;
function a(){
  consolo.log(10);  
}
a();
console.log(a);
a = 6;
a();

结果输出,f a(){ console.log(10) }, 结果是执行到a()时候出错,因为a被重新赋值为3,已经不是函数,所以执行a()出错。

这里需要注意一点是,js上下文提前的时候,函数的优先级比变量优先级高;

2. 主要考察闭包问题

function func(n, k){
  consolo.log(k);
  return {
     func: function(m){
        return func(m, n);
    }          
  }    
}    

var a = func(0); a.func(1); a. func(2); a.func(3);

var b = func(0).func(1).func(2).func(3);

var c = func(0).func(1); c.func(2); c.func(3);

执行结果:

undefined   0, 0, 0

undefined 0, 1, 2

undefined 0, 0, 0

原文地址:https://www.cnblogs.com/KruceCoder/p/7954978.html