JS笔试题2

93 阅读1分钟

1.代码:

<script type="text/javascript">
		var a=""+3;
		var b=4;
		console.log(typeof a);//String
		console.log(a+b);//34
		console.log(a-b);-1
		var foo="11"+2+"1";
		console.log(foo);//1121
		console.log(typeof foo);//String
	</script>

答案:解析:数值类型的字符串可以跟数字做减法运算

image.png

2.代码:

<script type="text/javascript">
		var name="karen";
		function echo(){
			console.log(name);//"karen"
		}
		function env(){
			var name="eve";
			echo();
		}
		env();
		</script>

答案:解析:作用域

image.png 3.代码:

<script type="text/javascript">
			function Foo(){
				getName=function(){
					console.log(1);
				}
				return this;
			}
			Foo.getName=function(){console.log(2)}
			Foo.prototype.getName=function(){console.log(3)}
			var getName=function(){console.log(4)}
			function getName(){console.log(5)}
			Foo.getName();
			getName();
			Foo().getName();
			getName();
			new Foo.getName();
			new Foo().getName();
			new new Foo().getName();
			/*
			var getName;
			function Foo(){
				getName=function(){
					console.log(1);
				}
				return this;
			}
			function getName(){console.log(5)}
			Foo.getName=function(){console.log(2)}
			Foo.prototype.getName=function(){console.log(3)}
			getName=function(){console.log(4)}
			
			Foo.getName();
			//Foo.getName=function(){console.log(2)}
			//2
			getName();
			//window.getName==>function(){console.log(4)}
			//4
			Foo().getName();//this==>window
			//getName=function(){console.log(4)}==>function(){console.log(1)}
			//1
			getName();//1
			new Foo.getName();
			//2
			new Foo().getName();
			//(new Foo()).getName()
			//{__proto__:{getName:function(){console.log(3)}}}
			//3
			new new Foo().getName();
                            //new ((new Foo()).getName) ()
                            //getName:function(){console.log(3)}
			//3
			*/
		</script>

答案:解析:作用域、隐式声明提升、原型、符号优先级

image.png

4.要求:打印出数组中的所有数字

<script type="text/javascript">
			var arr=[[1,2,3,4,[2,3,4,5],[4,54,2,6]],[2,3,4,5,6]]
			function fn(arr){
				for(var i=0;i<arr.length;i++){
					if(typeof(arr[i])=="number"){
						 console.log(arr[i])
					}else{
						 fn(arr[i])
					}
				}
			}
			fn(arr)
			
		</script>

答案:

image.png

5.代码:

	<script type="text/javascript">
			var a=5;
			function test(){
				a=0;
				alert(a);
				alert(this.a);
				var a;
				alert(a);
			}
			
			test();
			new test();
			/*
			var a=5;
			function test(){
				var a;
				a=0;
				alert(a);//0//0
				alert(this.a);//5//undefined
				alert(a);//0//0
			}
			
			test();//this==>window
			new test();//{__proto__:test.prototype}==>test={}==>this.a=undefined
			*/

		</script>
                    

答案:0,5,0,0,undefined,0