1.怪异盒模型与正常盒模型的区别
正常盒模型设置padding和border会增大盒模型面积 "外扩"
ie盒模型设置padding和border会挤压内容区 "内嵌"
2.如何清除浮动
(1)在父级使用overflow:hidden
(2)动态向父元素后面添加一个clear:both的块属性元素
(3)动态添加一个div
3.== 与 ===的区别是什么
==:值相等就可以
===:数据类型和值必须都相等
4.基本数据类型与引用数据类型的区别是什么
基本数据类型:值在栈区
引用数据类型:值在堆区
5.请写出三种定位的参考物分别是什么
固定定位:相对于浏览器窗口
相对定位:相对于元素原来的位置
绝对定位:相对于有定位的父元素或者祖先元素
6.字符串方法substr与substring的区别是什么
substr(start,length)返回从start位置开始length长度的子串
substring(start,end)返回从start位置开始到end位置的子串(不包含end)
7.什么是原型链
原型链:对象调用属性或方法的寻找过程
先在自己的构造函数中寻找,如果没有就到自己的原型中寻找,如果还没有就到原型的原型中寻找,一直到找到object的原型,如果没有就报错
8.请解释事件委托
把事件添加给标签的父元素,通过事件对象e.target来实现具体的操作
9.DOM0与DOM2的区别是什么
Dom0:同一个事件只能实现一次
Dom2:同一个事件可以添加多个观察者
10.说一下存储机制之间的区别
localStorage 数据存储在本地,(没有过期时间)需要手动删除,存储量大
sessionStorage 数据依赖浏览器,当页面关闭或者退出浏览器时清空数据, 存储量大
cookie 可以为数据设置过期时间,存储量小,可以与后台共用
11.说一下你对闭包的理解
函数内实现另一个函数
作用:局部变量数据持久化
缺点:造成一定的内存压力
12.call方法与apply方法的异同
工作原理:改变this指向
call(this,参数1,参数2,......)
apply(this,[参数列表])
13.请写出 阻止冒泡 与 阻止默认
阻止默认 e.preventDefault()
阻止冒泡 e.stopPropagation()
14.请解释 构造函数 与 析构函数
构造函数:开辟内存空间
析构函数:释放内存空间
15.什么是响应式开发
一套代码适用于多个平台
16.dom对象与jq对象如何互换
dom转jq:$(对象)
jq转dom:取下标
17.简述一下你对this的理解
this所属函数属于谁就指向谁
18.请从html,css,js三个维度说一下如何减少页面加载时间
html角度:多使用语义化标签,减少标签层级化嵌套
css角度:减少动画使用;
适当的时候使用服务器字体;
使用精灵图/雪碧图(减少网络请求)
减少网络请求次数(节流)
js角度:减少for循环的嵌套
适当多使用switch
减少重绘和回流次数,多使用类来修改样式,减少内联样式修改
少使用load,多使用ready
减少网络请求次数
按需加载
19.请用setTimeout实现setInterval
<br class="Apple-interchange-newline"><div></div>
timerFun()
function timerFun(){
//要执行的操作
var timer=setTimeout(function(){
timerFun()
clearTimeout(timer)
},2000)
}
20.代码:冒泡排序
1.思想:两两比较,交换位置,小的在前面,大的在后面,一直比较
数组遍历第一遍以后,那么最后一个数字就是最大的
数组进行第二遍遍历,按照规则,第二大的数字就会跑到倒数第二大的位置
2.两个数据交换位置
var arr=[4,6,7,1,8,6,3,9]
var temp=arr[0]
arr[0]=arr[1]
arr[1]=temp
3.满足条件交换
for(var i=0;i<arr.length;i++){
if(arr[i]>arr[i+1]){
var temp=arr[i]
arr[i]=arr[i+1]
arr[i]=temp
}
}
4.实现冒泡排序法
var arr=[7,5,9,3,4,2,1,6,8]
console.log(arr);
for(var j=0;j<arr.length-1-j;i++){
if(arr[i]>arr[i+1]){
var temp=arr[i]
arr[i]=arr[i+1]
arr[i+1]=temp
}
}