菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
325
0

前端面试题0409

原创
05/13 14:22
阅读数 61268

第一题:

var a = 6;
for(var a = 0; a < 9; a++){

}
console.log(a);

 

第二题:

var B = {
    num: "123",
    fn: function (){
        console.log(this.num);
    }

}
B.fn();
var A = B.fn;
A();    

 

第三题:

function A(a){

    console.log(a++);

    A = function (b){
        console.log(a++ + b);
    }
}
A(1);
A(1);    

 

参考答案:

第一题:

考点:变量提升,变量作用域

var不支持块级作用域,所以for中的变量a会覆盖掉for外面的,a在0~8循环,在9时跳出,所以最后输出9

第二题:

考点:函数的this

B.fn()的输出为123,A()的输出为undefined,函数中的this是动态的,取决于谁调用,B是由全局window调用的,window下无num属性,所以输出为undefined

第三题:

考点:闭包,自增运算符

第一次调用A(1)输出为1,并将一个新函数(闭包函数)赋值给A

第二次调用A(1)时,执行的是闭包函数,闭包函数中可以使用父函数的变量a(为2),b为1,所以a++ + b为3,输出为3

相关热门文章

发表评论

0/200
325 点赞
0 评论
收藏