面试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