08-04-web前端面试题2015_3

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

用js实现随机选取10–100之间的10个数字,存入一个数组,并排序。答:variArray=[];functiongetRandom(istart,iend){variChoice=iend-istart+1;returnMath.floor(Math.random()*iChoice+istart;}for(vari=0;i10;i++){iArray.push(getRandom(10,100));}iArray.sort();vararr=[];for(i=0;i10;i++){varr=Math.floor(Math.random()*91+10);arr.push(r);}alert(arr);把两个数组合并,并删除第二个元素。vararray1=['a','b','c'];varbArray=['d','e','f'];varcArray=array1.concat(bArray);cArray.splice(1,1);vararr1=['a','b','c'];vararr2=[1,2,3,4];vararr3=arr1.concat(arr2)arr3.splice(1,1);alert(arr3);怎样添加、移除、移动、复制、创建和查找节点(原生JS,实在基础,没细写每一步)答:1)创建新节点createDocumentFragment()//创建一个DOM片段createElement()//创建一个具体的元素createTextNode()//创建一个文本节点2)添加、移除、替换、插入appendChild()//添加removeChild()//移除replaceChild()//替换insertBefore()//插入3)查找getElementsByTagName()//通过标签名称getElementsByName()//通过元素的Name属性的值getElementById()//通过元素Id,唯一性有这样一个URL:=1&b=2&c=&d=xxx&e,请写一段JS程序提取URL中的各个GET参数(参数名和参数个数不确定),将其按key-value形式返回到一个json结构中,如{a:’1′,b:’2′,c:”,d:’xxx’,e:undefined}。答案:1functionserilizeUrl(url){2varresult={};3url=url.split(?)[1];4varmap=url.split(&);5for(vari=0,len=map.length;ilen;i++){6result[map[i].split(=)[0]]=map[i].split(=)[1];7}8returnresult;9}看下面代码,给出输出结果。12345for(vari=1;i=3;i++){setTimeout(function(){console.log(i);},0);};原因:Javascript事件处理器在线程空闲之前不会运行。追问,如何让上述代答案:444。原因:Javascript事件处理器在线程空闲之前不会运行。那么问题来了,如何让上述代码输出123?1for(vari=1;i=3;i++){2setTimeout((function(a){//改成立即执行函数3console.log(a);4})(i),0);5};671//输出8293写一个function,清除字符串前后的空格。(兼容所有浏览器)使用自带接口trim(),考虑兼容性:1if(!String.prototype.trim){2String.prototype.trim=function(){3returnthis.replace(/^\s+/,).replace(/\s+$/,);4}5}67//testthefunction8varstr=\t\nteststring.trim();9alert(str==teststring);//alertstrueJavascript中callee和caller的作用?答案:caller是返回一个对函数的引用,该函数调用了当前函数;callee是返回正在被执行的function函数,也就是所指定的function对象的正文。那么问题来了?如果一对兔子每月生一对兔子;一对新生兔,从第二个月起就开始生兔子;假定每对兔子都是一雌一雄,试问一对兔子,第n个月能繁殖成多少对兔子?(使用callee完成)1varresult=[];2functionfn(n){//典型的斐波那契数列3if(n==1){4return1;5}elseif(n==2){6return1;7}else{8if(result[n]){9returnresult[n];10}else{11//argument.callee()表示fn()12result[n]=arguments.callee(n-1)+arguments.callee(n-2);13returnresult[n];14}15}16}实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制考察点1:对于基本数据类型和引用数据类型在内存中存放的是值还是指针这一区别是否清楚考察点2:是否知道如何判断一个变量是什么类型的考察点3:递归算法的设计1//方法一:2Object.prototype.clone=function(){3varo=this.constructor===Array?[]:{};4for(vareinthis){5o[e]=typeofthis[e]===object?this[e].clone():this[e];6}7returno;8}910//方法二:11/**12*克隆一个对象13*@paramObj14*@returns15*/16functionclone(Obj){17varbuf;18if(ObjinstanceofArray){19buf=[];//创建一个空的数组20vari=Obj.length;21while(i--){22buf[i]=clone(Obj[i]);23}24returnbuf;25}elseif(ObjinstanceofObject){26buf={};//创建一个空对象27for(varkinObj){//为这个对象添加新的属性28buf[k]=clone(Obj[k]);29}30returnbuf;31}else{//普通变量直接赋值32returnObj;33}34}如何消除一个数组里面重复的元素?1vararr=[1,2,3,3,4,4,5,5,6,1,9,3,25,4];2functiondeRepeat(){3varnewArr=[];4varobj={};5varindex=0;6varl=arr.length;7for(vari=0;il;i++){8if(obj[arr[i]]==undefined)9{10obj[arr[i]]=1;11newArr[index++]=arr[i];12}13elseif(obj[arr[i]]==1)14continue;15}16returnnewArr;1718}19varnewArr2=deRepeat(arr);20alert(newArr2);//输出1,2,3,4,5,6,9,25下面这个ul,如何点击每一列的时候alert其index?(闭包)12345ulid=”test”li这是第一条/lili这是第二条/lili这是第三条/li/ul答案:1//方法一:2varlis=document.getElementById('2223').getElementsByTagName('li');3for(vari=0;i3;i++)4{5lis[i].index=i;6lis[i].onclick=function(){7alert(this.index);8};9}1011//方法二:12varlis=document.getElementById('2223').getElementsByTagName('li');13for(vari=0;i3;i++)14{15lis[i].index=i;16lis[i].onclick=(function(a){17returnfunction(){18alert(a);19}20})(i);21}编写一个JavaScript函数,输入指定类型的选择器(仅需支持id,class,tagName三种简单CSS选择器,无需兼容组合选择器)可以返回匹配的DOM节点,需考虑浏览器兼容性和性能。/***@paramselector{String}传入的CSS选择器。*@return{Array}*/[javascript]viewplaincopy1.functionquery(selector){2.3.varreg=/^(#)?(\.)?(\w+)$/img;4.varregResult=reg.exec(selector);5.varresult=[];6.7.//如果是id选择器8.if(regResult[1]&®Result[3]){9.if(typeofdocument.querySelector===function){10.result.push(document.querySelector(regResult[0]));//用result[result.length]=..速度更快11.}12.else{13.result.push(document.getElementById(regResult[3]));14.}15.}16.//如果是class选择器17.elseif(regResult[2]&®Result[3]){18.if(typeofdocument.getElementsByClassName==='function'){19.vardoms=document.getElementsByClassName(regResult[3]);20.if(doms){21.result=converToArray(doms);22.}23.}else{//如果不支持getElementsByClassName函数24.varallDoms=document.getElementsByTagName(*);25.for(vari=0,len=allDoms.length;ilen;i++){26.if(allDoms[i].className.search(newRegExp(regResult[2]))-1){27.result.push(allDoms[i]);28.}29.}30.}31.}32.//如果是标签选择器33.elseif(regResult[3]){34.vardoms=document.getElementsByTagName(regResult[3].toLowerCase());35.if(doms){36.result=converToArray(doms);37.}38.}39.returnresult;40.}41.42.functionconverToArray(nodes){43.vararray=null;44.try{45.array=Array.prototype.slice.call(nodes,0);//针对非IE浏览器46.}catch(ex){47.array=newArray();48.for(vari=0,len=nodes.length;ilen;i++){49.array.push(nodes[i])50.}51.}52.returnar

1 / 66
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功