2018前端面试题
1、js主要数据类型和复合数据类型 答案:Number、String、boolean、null、undefined基本数据类型, 除了这些以外都是复合类型,例如:Object、Array、Date、Math、RegExp 2、console.log(null == NaN) //false console.log(null == undefined) //true console.log(null == false) //false console.log(false == ' ' ) //true console.log(false == 0) //true console.log(1+2+'3') //33 console.log('3'+1+2) //312 console.log(Number(undefined)) //NaN console.log(Number(' '))// 0 console.log(isNaN(NaN))// true console.log(isNaN('23'))// false console.log(typeof NaN) //number console.log(NaN == NaN) //false console.log(undefined == undifined) //true 3、function t(a){ var a='hello'; alert(a) function a() { alert(null) } alert(a) } t(null) //输出hello,hello 注意没有执行a()函数 4、function fn(b) { alert(b) function b() { alert(b) } b() } fn(10) //输出两次function b() {alert(b)} 5、function a(b) { alert(b) b=function () { alert(b) } b() } a()//输出undefined ,function () {alert(b)} 6、js事件监听参数哪些是事件流机制的?js事件流机制有哪些?原理是什么? 答案:js事件监听element.addEventListener(event, function, useCapture)ie8以下是attachEvent <input type="button" value="click me" id="btn1"> <script> //事件监听 document.getElementById("btn1").addEventListener("click",hello); function hello(){ alert("hello world!"); } //事件委托 document.onclick=function (event) { if(event.target == btn6){ hello() } } </script> 7、用js实现一个继承 8、封装一个函数正则匹配获取当前页面中的class类名 9、详细写出ajax的工作机制,列举js处理跨域的方式 10、ajax的工作机制是什么,列举js处理跨域的方式 11、用js写一个冒泡排序算法 12、rem、em、和px的区别rem自适应布局
px: 像素;如果改变了浏览器的缩放布局就会被打乱 em: 10px=0.625em(原因是16px=1em;12px=0.75em;) body{font-size:62.5%} div{width:5.5em} /*就是宽度为55px的div*/ rem:html{font-size:100px;} div{width:0.55rem}/*就是宽度为55px的div*/
13、随机打印1-100之间的数字,去重后取出该10个数字的和最小值和最大值 14、关于数组是最常考的 什么是伪数组,如何将伪数组转化成标准数组, 怎么判断一个变量是不是数组,并将这个数组随机排序,数组都有哪些方法 15、浏览器缓存有哪些,通常缓存分几种 16、将url的查询参数解析成对象 17、如何设置localstorage的过期时间 18、vue的生命周期 19、描述一下vue实例的viewmodel的生命周期(钩子函数) 20、利用vue过滤器实现一个数字加千分号 21、列举浏览器对象模型BOM里对象有哪些 window、location、Navigator详细介绍bom对象
22、css3中transform、translate、transition有什么区别 23、css3中box-sizing是什么,有什么特点 content-box:不包括padding、border的值 border-box:包括padding、border的值,所以宽度不会因为设置了padding值而增大 24、移动端网页使用click会有什么问题 25、圣杯布局和双飞翼布局 26、display:none 和 visibility:hidden的区别 display:none 不在文档流中占位,浏览器也不会解析,切换显示时页面会产生回流 (页面重构,部分页面需要改变规模尺寸) visibility:hidden 在文档流中占位,相当于透明度为0,切换显示时不会产生回流,所以性能更高