面试题WEB前端常见面试题汇总:(一).docx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《面试题WEB前端常见面试题汇总:(一).docx》由用户(最好的沉淀)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 试题 WEB 前端 常见 汇总
- 资源描述:
-
1、试题WEB前端常见试题汇总:( )1. JS找字符串中出现最多的字符例如:求字符串nininihaoa中出现次数最多字符var str = nininihaoa; var o = ;for (var i = 0, length = str.length; i length; i+) var char = str.charAt(i);if (ochar) ochar+; /次数加1 else ochar = 1; /若第次出现,次数记为1console.log(o); /输出的是完整的对象,记录着每个字符及其出现的次数/遍历对象,找到出现次数最多的字符的次数var max = 0;for (va
2、r key in o) if (max okey) max = okey; /max始终储存次数最的那个for (var key in o) if (okey = max) /console.log(key);console.log(最多的字符是 + key); console.log(出现的次数是 + max);法:结果如图所:var arrString = abcdaabc; arrString.split().reduce(function(res, cur) rescur ? rescur + : rescur = 1return res;, )法,当然还可以使reduce法来实现:想
3、详细了解reduce()法,可以参考:2. JS实现九九乘法表var sum=0; var wite;for (var i = 1; i 10; i+)var div=$();$(body).append(div);for(var j = i; j 0; j-) sum = j * i;wite = (j+X+i+=+sum);div.prepend($(+wite+);jQuery实现式:实现结果如图所:原js实现式: css代码:html,body,ul,li padding: 0;margin: 0;border: 0;ul width: 900px; overflow: hidden;
4、 margin-top: 4px; font-size: 12px; line-height: 36px;li float: left; width: 90px; margin: 0 4px;display: inline-block; text-align: center; border: 1px solid #333;background:yellowgreen;js代码:for(var i = 1; i = 9; i+)var myUl = document.createElement(ul); for(var j = 1; j = i; j+)var myLi = document.c
5、reateElement(li);var myText = document.createTextNode(j + + i + = + i*j); myLi.appendChild(myText);myUl.appendChild(myLi);document.getElementsByTagName(body)0.appendChild(myUl);原js实现效果如图所3. 前端试:这道前端试题很绕吗?做对了道?第题var fun = function() this.name = peter; return name: jack;var p = new fun();/请问p.name是:第题
6、var fun = function() this.name = peter;return jack;var p = new fun();/请问p.name是:第三题var fun = function() fun.prototype = info : name : peter, age : 25var a = new fun(); var b = new fun();a.info.name = jack; b.info.name = tom;/请问a.info.name和b.info.name分别是:第四题var fun = function() this.info = name : pet
7、er, age : 25var a = new fun(); var b = new fun();a.info.name = jack; b.info.name = tom;/请问a.info.name和b.info.name分别是:第五题var fun = function() fun.prototype = name : peter, age : 25var a = new fun(); var b = new fun();a.name = jack; b.name = tom;/请问a.name和b.name分别是:第六题var fun = function() this.info =
8、name : peter, age : 25fun.prototype = info : name : peter, age : 25var a = new fun(); var b = new fun();a.info.name = jack; b.info.name = tom;/请问a.info.name和b.info.name分别是:解答:1,2题考察的是构造函数的返回值的问题。每个函数都有返回值,如果使了return语句,则返回return后跟的值,如果没有使return,则默认返回undefined.特别的,如果这个函数是构造函数,则默认返回this对象,如果构造函数内使了retu
9、rn语句,并且return后跟的是个对象,则这个构造函数返回的是这个对 象,否则返回this.所以1题中的p = name: jack,2题中的p = name: peter.3, 4, 5, 6题都是考察prototype的知识。1. 先查找构造函数实例的属性或法,如果有,就即返回。2. 如果构造函数的实例没有,就去它的原型对象找,如果有,就即返回3. 两个都输出tom。先你要知道原型模式的执流程:4 .a.info.name 为jack,b.info.name为tom。原因我想你从第三题已经得出来了。5.a.name输出jack,b.name输出tom。原因我想你从第三题已经得出来了。6.
10、a.info.name 为jack,b.info.name为tom。原因我想你从第三题已经得出来了。注意:第三题 a.info.name这段代码,先去访问了实例对象本是否有info这个对象,发现没有就去原型上查找了,发现原型上有,所以地址共享了得到的值都是Tom;第五题是有区别的,a.name实例本没有,给当前a这个实例对象执赋值操作,没有去访问原型上的name。就相当于第 三题先访问了原型上的info对象,第五题没有访问过程,只是在实例上添加了name属性值。4. 通过例搞懂JS闭包例1function sayHello(name)var text = Hello + name;var sa
11、yAlert = function() console.log(text); sayAlert();sayHello(Bob) / 输出Hello Bob在sayHello()函数中定义并调了sayAlert()函数;sayAlert()作为内层函数,可以访问外层函数sayHello()中的text变量。例2function sayHello2(name)var text = Hello + name; / 局部变量var sayAlert = function() console.log(text); return sayAlert;var say2 = sayHello2(Jane); s
12、ay2(); / 输出Hello Jane例3function buildList(list) var result = ;for(var i = 0; i list.length; i+) var item = item + listi; result.push(function() console.log(item + + listi););return result;var fnlist = buildList(1,2,3);for (var j = 0; j fnlist.length; j+) fnlistj();得到的结果:连续输出3个item3 undefined解析:通过执bu
13、ildList函数,返回了个result,那么这个result存放的是3个匿名函数。然这三个匿名函数其实就是三个闭包,因为它可以访问到函数 的局部变量。所以闭包内的保留的i是最终的值为3.所以list3肯定是undefined. item变量值为item3.function buildList(list) var result = ;for(var i = 0; i list.length; i+) var item = item + listi; result.push(function(i) console.log(item + + listi);)(i);return result;va
14、r fnlist = buildList(1,2,3);改成如下代码:得到的结果:item1 1item2 2item3 3解释:这虽然传递了个数组进去,但是返回的是三个执的函数。例4function newClosure(someNum, someRef)var anArray = 1,2,3; var num = someNum; var ref = someRef; return function(x)num += x; anArray.push(num);console.log(num: + num + ; + anArray + anArray.toString() + ; + re
15、f.someVar + ref.someVar);closure1 = newClosure(40, someVar: closure 1); closure2 = newClosure(1000, someVar: closure 2);closure1(5); / 打印num: 45; anArray 1,2,3,45; ref.someVar closure 1closure2(-10); / 打印num: 990; anArray 1,2,3,990; ref.someVar closure 2每次调newClosure()都会创建独的闭包,它们的局部变量num与ref的值并不相同。例
16、5function sayAlice()var sayAlert = function() console.log(alice); var alice = Hello Alice;return sayAlert;var sayAlice2 = sayAlice(); sayAlice2(); / 输出Hello Alicealice变量在sayAlert函数之后定义,这并未影响代码执。因为返回函数sayAlice2所指向的闭包会包含sayAlice()函数中的所有局部变量,这然包括了alice 变量,因此可以正常打印”Hello Alice”。例6function setupSomeGloba
17、ls() var num = 666;gAlertNumber = function() console.log(num); gIncreaseNumber = function() num+; gSetNumber = function(x) num = x; setupSomeGlobals(); gAlertNumber(); / 输出666 gIncreaseNumber(); gAlertNumber(); / 输出667 gSetNumber(5); gAlertNumber(); / 输出5解释:先gAlertNumber,gIncreaseNumber,gSetNumber是三
18、个全局变量,并且其三个值都是匿名函数,然这三个匿名函数本都是闭包。他们操 作的num都是保存在内存中的同个num,所有会得出上的结果。/ 这个代码是错误的,因为变量i从来就没背locked住/ 相反,当循环执以后,我们在点击的时候i才获得数值/ 因为这个时候i操真正获得值/ 所以说论点击那个连接,最终显的都是I am link #10(如果有10个a元素的话)var elems = document.getElementsByTagName(a); for (var i = 0; i elems.length; i+) elemsi.addEventListener(click, functi
展开阅读全文