- A+
所属分类:Web前端
第一题:
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