当前位置: 首页 > Web前端 > HTML5

整理前端面试题

时间:2023-04-05 12:51:23 HTML5

实现vara=add(2)(3)(4);//9第一种方法:functionadd(a){vartemp=function(b){returnadd(a+b);}temp.valueOf=function(){返回一个;}returntemp;}varresult=add(2)(3)(4);console.log(result);第二种方法:functionadd(){varargs=Array.prototype.slice.call(arguments);varfn=function(){varfnArgs=Array.prototype.slice.call(参数);返回add.apply(null,args.concat(fnArgs));}fn.valueOf=function(){returnargs.reduce(function(a,b){returna+b;})}returnfn;}varresult=add(2)(3)(4);控制台。日志(结果);第三种方式letadd=(...a)=>{lethelper=(...b)=>{returnadd(...[...a,...b]);};helper.valueOf=()=>{让总和=0;for(letitemofa){sum+=item;}返回总和;}returnhelper;};varresult=add(2)(3)(4);控制台日志(结果);第四种方式:functionadd(num){num+=~~add;添加.num=num;返回添加;}add.valueOf=function(){returnadd.num;}varresult=add(2)(3)(4);控制台日志(结果);这里需要说明的是:String类型的toString方法需要存在并返回原类型,那么如果返回的不是原始类型,就会继续寻找对象的valueOf方法函数类型转换:类似toNumber转换,如果函数的valueOf方法返回的是非原始类型,则继续寻找其toString方法。判断是否为数组if(typeofArray.isArray==="undefined"){Array.isArray=function(arg){returnObject.prototype.toString.call(arg)==="[对象数组]"};}解释代码vara;alert(typeofa);//undefinedUndefined是一种只有一个值的数据类型,这个值是“undefined”。值为undefinedalert(b);//会报错,因为没有声明varc=null;alert(typeofc);//objectnull是一种只有一个值的数据类型,这个值为null代表一个空指针对象,所以typeof测试会返回“object”[]==false;//真[]==![];//true尝试将Object转换为number或string,依赖于另一种比较类型实现随机选择10--100之间的10个数字,存入数组,排序variArray=[];functiongetRandom(istart,iend){//选择的区间variChoice=iend-istart+1;//乘以区间并加上起始位returnMath.floor(Math.random()*iChoice+istart);}for(vari=0;i<10;i++){iArray.push(getRandom(0,200)));}iArray.sort(function(a,b){returna-b;});arguments,callee,callerarguments.length为实参个数functioninner(){console.log(arguments.callee);//--callee放回正在执行的函数的引用指向拥有arguments对象的函数,即inner()console.log(arguments.callee.caller);//--这里是callee.caller。该属性保存着当前函数的调用引用,即outer()console.log(inner.caller);//[Function:outer]}functionouter(){inner();}outer();//在严格模式下,不允许访问arguments.callee和arguments.caller属性'usestrict';//两次都是1voidfunctionfn(a){console.log(arguments[0]);//1a=2;console.log(arguments[0]);//1}(1);查找数组中的最大值//第一种方法vara=[1,2,3,6,5,4];varmax=Math.max.apply(null,a);console.log(max);//第二种方法vara=[1,2,3,6,5,4];varmax=eval('Math.max('+a.toString()+')');console.log(max);斐波那契数列函数*fib(n){let[a,b]=[1,1];while(n--){产生一个;[a,b]=[b,a+b];}}for(letitemoffib(5)){控制台。log(item);}判断字符串中出现次数最多的字符,统计出现次数vars='aaabbbcccaaabbbaaabbbbbbbbbbb';vara=s.split('');a.sort();//排序后,它变成["a","a","a","a","a","a","a","a","a","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","c","c","c"]s=a.join('');varpattern=/(\w)\1*/g;//正则表达式中的括号"()”表示分组。如果其后出现\1,则表示与第一个括号中要匹配的内容相同。//注意:\1必须和括号一起使用varans=s.match(pattern);//ans变成["aaaaaaaaa","bbbbbbbbbbbbbbbb","ccc"]ans.sort(function(a,b){returna.length,那么浏览器会将该文档识别为一个css文件,并会在不停止当前文档处理的情况下并行下载资源。这也是为什么推荐使用link方式加载css而不是使用@import方式的原因。优化图片加载方式图片懒加载,可以在页面不可见区域添加滚动条事件,判断图片位置距离浏览器顶部和页面距离,如果前者小于后者,它将首先加载。如果是幻灯片、相册等,可以使用图片预加载技术,先下载当前显示图片的上一张和下一张。如果图片是css图片,可以使用CSSsprite、SVGsprite、Iconfont、Base64等技术。如果图片太大,可以使用经过特殊编码的图片。加载时会先加载经过特别压缩的缩略图,以提升用户体验。如果图片显示区域小于图片实际尺寸,则根据业务需要先在服务器端对图片进行压缩,压缩后的图片尺寸与显示尺寸一致。跨域通信##js定义方法方法##使用Object.create创建对象一般会比较少用自己实现bind方法Function.prototype.bind=Function.prototype.bind||function(context){变种自我=这个;returnfunction(){returnself.apply(contex,arguments);};}HTTPMethod的一般类型有哪些##display:none和visibility:hidden的区别##如何理解第四个区别:如果displaynone的容器里有img的话,它的background-image不会请求相应的资源,但是可见性会要求web安全和保护参考资料:BAT与各大互联网公司2014年前端笔试面试题——Html、CssBAT与各大互联网公司2014年前端笔试面试题——JavaScript文章Do这10道javascript笔试题你知道吗?大多数人都会做错的经典JS闭包面试题一道经常被低估的前端JS面试题/bVQYiH