第一题:
- 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