js函数面试题
作者:互联网
题目一
function fun(){
var i=0;
return function(){
document.write(i++);
}
}
var f1=fun();
f2=fun();
f1();//0
f1();//1
f2();//0
这是一个闭包,f1()和f2()执行的是function(),但是fun()中的i此时还在内存中,所以i是可以被调用,主要点在于f1()和f2()分别创建了两个各自的执行环境
,两者之间互不影响,所以结果是 0 1 0。
题目二
var color = 'red';
var test = {
color:'blue',
getColor:function(){
var color='green';
alert(this.color);
}
}
var getColor=test.getColor;
getColor();
test.getColor();
//输出red blue
var getColor=test.getColor; 代表的是 function函数的代码赋给getColor,
所以此时 getColor(); 为
function(){
var color='green';
alert(this.color);
}
再根据this总是指向调用它的对象,此时是window调用,所以输出 red
test.getColor(); 此时this指向test,所以输出blue。
题目三
var i = 10
function aaa () {
i = 20
console.log(i) //20
for (var i = 0; i < 6; i++) {
console.log(i) // 0 1 2 3 4 5
}
console.log(this.i) //g 10
console.log(i) // 6
}
aaa()
console.log(i)//10
第一个输出 由于给局部变量i赋值 所以输出20
第二个输出for循环 输出0 1 2 3 4 5,当i = 6时终止循环
第三个输出,在一般函数中使用this指代全局对象,此是this.i = window.i 输出10
第四个输出,上面for循环结束后i =6 ,所以输出6
第五个输出,输出全局变量 i =10
标签:function,输出,面试题,函数,color,getColor,js,test,var 来源: https://blog.csdn.net/ANGWH/article/details/104194725