js中的笔试题

本文主要探讨JavaScript这门前端开发语言中常出现的笔试题目,涵盖了语法、数据类型、作用域、闭包等核心概念,旨在帮助开发者提升JavaScript技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


 function sum() {			
	if (arguments.length == 2) {
		return arguments[0] + arguments[1];
 	} else if (arguments.length == 1) {
 		var first = arguments[0];//2
 		return function(second) {
 			return first + second;//3
 		};
 	}
 }
 console.log(sum(2,3));//5			
 console.log(sum(2)(3));//5
 var fn = 90;
 var o = {
 	fn: function() {					
 		console.log(fn);

 	}
 }
 console.log(o.fn());
function fun(n, o) {
		console.log(o)
		return {
			fun: function(m) {
				return fun(m, n);
			}
		};
}
var a = fun(0);
a.fun(1);
a.fun(2);
a.fun(3);
var b = fun(0).fun(1).fun(2).fun(3);		
var c = fun(0).fun(1);
c.fun(2);
c.fun(3);
/*
 解析时我用大括号代表作用域:
				全局socoped:{					
					var a=fun(0)
					socoped[fun(0)]:{
						var n=0;
						var o; 
						console.log(o)//打印undef
						return {fun: function(m) {return fun(m, n)}}
						socoped[a.fun(1)]:{
							var m=1;
							return fun(m, n)==> fun(1,0)
							
						}
						socoped[a.fun(2)]:{
							var m=2
							return fun(m, n)==>fun(2,0)
						}
						socoped[a.fun(3)]{
							var m=3;
							return fun(m, n)==>fun(3,0)							
						}
						
					}
					a.fun(1);
					
					socoped[a.fun(1)--fun(1,0)]:{
						var n=1 
						var o=0
						console.log(o)//打印0
						return {fun: function(m) {return fun(m, n)}}
					}
					
					a.fun(2);
					
					socoped:[a.fun(2)--fun(2,0)]{
						var n=2
						var o=0
						console.log(o)//打印0
						return {fun: function(m) {return fun(m, n)}}
					}
					
					
					a.fun(3);
					socoped:[a.fun(3)--fun(3,0)]{
						var n=3
						var o=0
						console.log(o)//打印0
						return {fun: function(m) {return fun(m, n)}}
					}
					
				}
			
*/



			
			/*
		   var b=fun(0).fun(1).fun(2).fun(3)		   
		   全局scoped:{
			   var b=fun(0)
			   scoped[fun(0)]{
				   var n=0
				   var o=undf
				   console.log(o)//打印undf
				   return {fun: function(m) {return fun(m, n)}}
				   scoped[fun(0).fun(1)]{
					   var m=1
					   return fun(m, n)==>fun(1,0)
				   }
				   
			   }
			   
			   scoped[fun(0).fun(1)--fun(1,0)]{
				   var n=1
				   var o=0
				   console.log(o)//打印0
				   return {fun: function(m) {return fun(m, n)}}
				   scoped[fun(0).fun(1).fun(2)]{
					  var m=2
					  return fun(m, n)==>fun(2,1)
				  }
			   }
			   
			   scoped[fun(0).fun(1).fun(2)--fun(2,1)]{
				   var n=2
				   var o=1
				    console.log(o)//打印1
					return {fun: function(m) {return fun(m, n)}}
					scoped[fun(0).fun(1).fun(2).fun(3)]{
						 var m=3
						 return fun(m, n)==>fun(3,2)						 
					 }
			   }
			   
			    scoped[fun(0).fun(1).fun(2).fun(3)--fun(3,2)]{
					var n=3
					var o=2
					 console.log(o)//打印2
					 	return {fun: function(m) {return fun(m, n)}}
				}
			   
		   }
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();
			//(2017-2022每年都有公司的笔试题中出现)
			//考点:this 作用域 隐式声明提升 原型 符号优先级
			/*
			  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();//obj.fn()==>2
			  getName();//4
			  
			  
			  getName = function() {
			  	console.log(1);
			  }
			  Foo().getName();==>window.getName()//1
			  
			  getName();//1
			  
			  new Foo.getName();==>new (Foo.getName) () //2
			  
			  
			  new Foo().getName();
			  (new Foo()).getName()
			  getName = function() {
			  	console.log(1);
			  }
			  new Foo()==>{__proto__:Foo.prototype==>{getName:function() {console.log(3)}}}//3
			  
			  new new Foo().getName();
			  new ((new Foo()).getName )()
			  getName = function() {
			  	console.log(1);
			  }
			  {__proto__:Foo.prototype==>{getName:function() {console.log(3)}}}//3
			  
			  
			*/
var obj1 = new Object();
obj1.name = 'zjzhome';
var obj2 = obj1;
console.log(obj2.name);//'zjzhome'
obj1.name = 'zjz';
console.log(obj2.name);//'zjz'
 var a = '' + 3;
 var b = 4;
 console.log(typeof a); //"string"
 console.log(a + b); //"34"
 console.log(a - b); //-1  数值类型的字符串可以跟数字减法运算
 console.log({} - b) //NaN 
            var name = 'laruence';

			function echo() {
				console.log(name);
			}

			function env() {
				var name = 'eve';
				echo();//'laruence';
			}
			env();
 var x = 1;
 function ScopeTest() {
 	console.log(x); //undefined 
 	var x = 'hello world';
	 	console.log(x); // hello world 
 }
 ScopeTest();
 a = new Array(2, 3, 4, 5, 6);
 sum = 0;
 for (i = 1; i < a.length; i++)
 	sum += a[i];
 console.log(sum);//18
var f = true;
if (f === true) {
var a = 10;
}

function fn() {
var b = 20;
	c = 30;
}
	fn();
console.log(a); //10
console.log(b); //代码报错
console.log(c); //30
			 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);
			 }

			// fn1(fn2);
			/*
			var fn1 
			var name 
			function fn1(x) {
				x(name);
			}
			function fn2(x) {
				console.log(x);//un
				console.log(name);//un
				var name = 'hello';
				console.log(name);//"hello"
			}
			fn1 = 'ivan'
			name = 'good'
			fn1 = function(y) {
				y();
			}
			fn1(fn2);
			
			 var num = 5;
			 function func1() {
			 	var num = 3;
			 	var age = 4;//6
			 	function func2() {
			 		console.log(num);//unf
			 		var num = 'ivan';

					function func3() {
			 			age = 6;
			 		}
			 		func3();
			 		console.log(num);// 'ivan'
			 		console.log(age);//6
			 	}
			 	func2();
			 }
			 func1();
			 function changeObjectProperty(o) {
			 	o.siteUrl = "http://www.csser.com/";
			 	o = new Object();
			 	o.siteUrl = "http://www.popcg.com/";
			 	return o
			 }
			 var CSSer = new Object();			
			 var re=changeObjectProperty(CSSer);			
			 console.log(CSSer.siteUrl);
			 console.log(re.siteUrl)
			 var x = 8;
			 var objA = {
			 	x: 'good',
			 	y: 32//5
			 }

			 function add(x, y) {
			 	console.log(x.y + y);//8
			 }

			 function fn(x, y) {
			 	x.y = 5;
			 	y(x, 3);
			 }
			 fn(objA, add);
			 console.log(objA);//{x:"good",y:5}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值