其他分享
首页 > 其他分享> > js函数面试题

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

ANGWH 发布了22 篇原创文章 · 获赞 0 · 访问量 186 私信 关注

标签:function,输出,面试题,函数,color,getColor,js,test,var
来源: https://blog.csdn.net/ANGWH/article/details/104194725