又到了找工作的时间了,即使有了一些工作经验但还是要复习面试题,最好的学习永远是在面试中,温故而知新,开搞!
1.函数的创建方式有哪几种?
答:函数创建方式:①直接function Name(){} ② 匿名函数 var Name = function(){} ③ var Name = function GoName(){},
2.举一个闭包的的例子?
闭包的例子:(简单的来说就是函数里调用函数,保护变量)
1 function GetSum(val){ 2 var a=val; 3 return function(b){ return a+b;} 4 } 5 var a=GetSum(1); 6 var b=GetSum(3); 7 console.log(a(1)); 8 console.log(b(1)); 9 console.log(a(3));
3.举一个曾经封装过的函数?
//中英文 function sizeof(str){//计算字符串长度 let total = 0, i, charCode, len; for(i = 0, len = str.length; i < len; i++){ charCode = str.charCodeAt(i); if(charCode <= 0x07ff){//英文字符 total += 1 }else{//中文字符 total += 2 } } return total }
4.简单阐述一下原型链的使用?
答:每一个函数都会有一个prototype属性,原型对象都包含一个指向构造函数想指针(constructor),而实例对象都包含一个指向原型对象的内部指针(__proto__)。如果让原型对象等于另一个类型的实例,此时的原型对象将包含一个指向另一个原型的指针(__proto__),另一个原型也包含着一个指向另一个构造函数的指针(constructor)。假如另一个原型又是另一个类型的实例……这就构成了实例与原型的链条。
5.谈谈你对this的理解?es6中的this指向问题?
答:1.全局作用域下this指向window 2.构造函数中,指向构造函数本身 3.方法调用中this指向调用者 ,es6中箭头函数的 this
永远指向该函数构造时的环境。
6.说一下浏览器渲染一个页面的过程?
答:1. 解析HTML 2. 构建DOM树 3. DOM树与CSS样式进行附着构造呈现树 4. 布局 5. 绘制
7.简单描述下同步和异步的区别,并举例实际应用中哪些是同步,哪些是异步?
同步:一个脚本运行的过程中,另一个脚本要等待,异步的话就是两个脚本可以同时进行,举个例子,表单验证是表单提交还是ajax提交,一个是同步一个是异步
8.jquery链式编程的原理
答:实际上链式操作仅仅是通过对象上的方法最后 return this
9.外边距合并问题
外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。行内框、浮动框或绝对定位之间的外边距不会合并。
①上下相邻的盒子合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者。
②当一个盒子包含在另一个盒子中时(假设没有内边距或边框把外边距分隔开),它们的上和/或下外边距也会发生合并。
解决方法是给父级加border或者overflow:hidden
10.jquery如何取到最后几个元素
我的想法是循环取
11.最快的数组去重排序(直接es6new set(去重)
1 var arr=[1,3,3,5,9,4,6,7]; 2 3 let s=new Set(arr1); 4 5 let arr = [....s]; 6 7 consolo.log(arr);
12.ajax工作原理(异步)
Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。要清楚这个过程和原理,我们必须对 XMLHttpRequest有所了解。
13.H5新特性和常见元素
新特性:canvas,video,audio,本都存储localstorage,svg;
常见元素:header,footer,nav,section,article,date,time,url等。
14.HTML语义化
1.内容结构化更加清晰
2.有利于seo搜索引擎爬虫搜索
3.便于维护和阅读
15.CSS3新特性
1.文字阴影 2.圆角边框 3.盒子模型box-sizing 4.过度transition动画 5转化transform 6媒体查询和自定义动画