JS笔试题1

179 阅读1分钟

1.代码:

<script type="text/javascript">
		function sum(){
			if(arguments.length==2){
				return arguments[0]+arguments[1];
			}else if(arguments.length==1){
				var first=arguments[0];
				return function(second){
				return first+second;
			  };
		    }
		}
		console.log(sum(2,3));//5
		console.log(sum(2)(3));//5
	</script>

答案: 解析:arguments.length代表的是实际传入参数个数(实参个数)

image.png

2.代码:

 <script type="text/javascript">
		var fn=90;
		var o={
			fn:function(){
				console.log(fn)
			}
		}
		console.log(o.fn());
	</script>

答案:

image.png

3.代码:

<script type="text/javascript">
		var User={
			count:1,
			getCount:function(){
				return this.count//window
			}
		}
		var fn=User.getCount;
		console.log(fn());//undefined
	</script>

答案: 解析:在全局中没有声明count,所以undefined

image.png

4.代码:

    <script type="text/javascript">
		var f=true;
		if(f===true){
			var a=10;
		}
		function fn(){
			var b=20;
			c=30;//在全局声明了一个 c
		}
		fn();
		console.log(a);//10
		console.log(b);//报错
		console.log(c);//30
	</script>

答案:10,报错,30

5.代码:

<script type="text/javascript">
		a=new Array(2,3,4,5,6);
		sum=0;
		for(i=1;i<a.length;i++)
		sum+=a[i];
		console.log(sum)//3+4+5+6=18
	</script>

答案:

image.png

6.代码:

<script type="text/javascript">
		function fun(n,o){
			console.log(o)
			return {
				fun:function(m){
					return fun(m,n);
				}
			};
		}
		var a=fun(0);//undefined
		a.fun(1);//m=1,n=0 ==>n=1,o=0  ==>0
		a.fun(2);//0
		a.fun(3);//0
		var b=fun(0).fun(1).fun(2).fun(3);//undefined,0,1,2
		/*1.
		function fun(0,o){
			console.log(o)//undefined
			return {
				fun:function(1){
					return fun(1,0)
				}
			}
		}
		2.function fun(1,0){
			console.log(0)//0
			return {
				fun:function(2){
					return fun(2,1)
				}
			}
		}
		3.function fun(2,1){
			console.log(1)//1
			return {
				fun:function(3){
					return fun(3,2)
				}
			}
		}*/
		var c=fun(0).fun(1);//undefined,0
		/*function fun(0,o){
			console.log(o)
			return {
				fun:function(1){
					return fun(1,0)
				}
			}
		}*/
		c.fun(2);//1
		c.fun(3);//1
	</script>

答案:

image.png

7.代码:

<script type="text/javascript">
		var buttons=[{name:"b1"},{name:"b2"},{name:"b3"}];
		function bind(){
			for(var i=0;i<buttons.length;i++){
				buttons[i].onclick=function(){
					console.log(i)
				}
			}
		};
		bind();
		/*for循环:
		1.buttons[0].onclick=function(){console.log(i)}
		2.buttons[1].onclick=function(){console.log(i)}
		3.buttons[2].onclick=function(){console.log(i)}*/
		buttons[0].onclick();//3
		/*当onclick运行时,前面的代码已经运行完了,所以
		console.log(2+1)=3*/
		buttons[1].onclick();//3
		buttons[2].onclick();//3
	</script>

答案:

image.png

8.代码:

<script type="text/javascript">
		(function(){
			var a=b=3;
			/*
			  var a;
			  var b=3
			*/
        })();
		console.log("a defined?"+(typeof a!=="undefined"));
                    //typeof a="undefined"
		//"a defined?false"
		console.log("b defined?"+(typeof b!=="undefined"));
                    //typeof b="number"
		//"b defined?true"
        console.log(b);//3
		console.log(typeof a);//undefined
	</script>

答案:

image.png

9.代码:

<script type="text/javascript">
		var fn1="ivan";
		var name="good";
		var fn1=function(y){
			y();
		}
		function fn1(x){
			x(name);
		}
		function fn2(x){
			console.log(x);
			console.log(name);
			var name="hello";
			console.log(name);//hello
		}
		fn1(fn2);
		/*
		var fn1
		var name
		function fn1(x){
			x(name);
		}
		function fn2(x){
			var name
			console.log(x);//undefined
			console.log(name);//undefined
			 name="hello";
			console.log(name);//hello
		}
		fn1="ivan";
		name="good";
		fn1=function(y){
			y();//fn2()
		}
		fn1(fn2);
		*/
	</script>

答案:解析:同名标识符提升,函数提升

image.png

10.代码:

<script type="text/javascript">
		var num=5;
		function func1(){
			var num=3;
			var age=4;
			function func2(){
				console.log(num);
				var num="ivan";
				function fun3(){
					age=6;
				}
				fun3();
				console.log(num);
				console.log(age);
			}
			func2();
		}
		func1();
		/*
		var num=5;
		function func1(){
			var num=3;
			var age=4;
			function func2(){
				var num
				console.log(num);//undefined
			    num="ivan";
				function fun3(){
					age=6;
				}
				fun3();
				console.log(num);//ivan
				console.log(age);//6
			}
			func2();
		}
		func1();*/
	</script>

答案:

image.png

11.代码:

<script type="text/javascript">
		function changeObjectProperty(o){
			o.siteUrl="http://www.csser.com/";
			o=new Object();
			o.siteUrl="http://www.popcg.com/";
		}
		var CSSer=new Object();
		changeObjectProperty(CSSer);
		console.log(CSSer.siteUrl)
		/*
		var CSSer;
		function changeObjectProperty(o){
			o.siteUrl="http://www.csser.com/";
			o=new Object();
			o.siteUrl="http://www.popcg.com/";
		}
		CSSer=new Object();//{}
		changeObjectProperty(CSSer);
		//全局:CSSer:{siteUrl:"http://www.csser.com/"}
		//局部:CSSer:{siteUrl:"http://www.popcg.com/"}
		console.log(CSSer.siteUrl)//"http://www.csser.com/"
		*/
	</script>

答案:解析:引用数据,作用域

image.png

12.代码:

<script type="text/javascript">
		var x=8;
		var objA={
			x:"good",
			y:32//5
		}
		function add(x,y){
			console.log(x.y+y);//"good5"
		}
		function fn(x,y){
			x.y=5;
			y(x,3);//add(x,3)=add(objA,3)==>objA.y+3=8
		}
		fn(objA,add);
		console.log(objA);//objA={x:"good",y:5}
	</script>

答案:

image.png