1.src和href的区别 ?
href是Hypertext Reference的缩写,表示超文本引用。用来建立当前元素和文档之间的链接。常用的有:link、a。
浏览器会识别href引用的文档并行下载该文档,并且不会停止对当前文档的处理
src是source的缩写,src的内容是页面必不可少的一部分,是引入。src指向的内容会嵌入到文档中当前标签所在的位置。常用的有:img、script、iframe。
当浏览器解析到src引用时,会暂停浏览器的渲染,直到该资源加载完毕。这也是将js脚本放在底部而不是头部的原因。
3.用过哪些盒模型,以及他们各自的区别?
1.W3C盒模型(标准盒模型)
给一个标签添加:box-sizing:content-box;(元素默认)
这个标签就转换为了w3c盒模型
标签得实际宽度 = 设置的宽度 + border宽度 + padding的宽度
2.怪异盒模型(又称ie盒模型)
给一个标签添加:box-sizing:border-box;
这个标签就转换为了怪异盒模型
标签得实际宽度 = 设置的宽度
如果设置了padding和border就是从设置的实际宽高中减去,减去后才是内容的宽高。
3.区别
主要区别:对于宽高的定义不同
w3c盒模型:设置的宽度就等于内容的宽度
怪异盒模型:内容的宽度 = 设置的宽度 - border的宽度 - padding的宽度
4.谈谈你的移动端适配方案有哪些?
- 布局视口(layout viewport)
CSS布局,是以布局视口做为参照系来计算的。
一般手机浏览器的默认布局视口宽度为980px(黑莓和IE的宽度为1024px)
- 视觉视口(visual viewport)
视觉视口是页面当前显示在屏幕上的部分
- 理想视口(ideal viewport)
理想视口的大小取决于设备独立像素的大小
6.如何判断一个对象是否具备某个属性?如何判断对象为空对象?
//判断是否具有摸个属性
if(this.$route.query.hasOwnProperty('orderRepayStatus')){
this.replyShowStatus=false
}else{
this.replyShowStatus=true
}
//判断一个对象里是不是具有属性,这个对象是否为空
if(Object.keys(this.deInfo).length>0){
this.formData=this.deInfo
}
使用JSON.stringify把对象转为字符串,再判断字符串是否等于"{}"
7. var、let、const的区别
var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问。
let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。
const用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改。
8.普通函数和箭头函数的区别:
箭头函数没有prototype(原型),所以箭头函数本身没有this
箭头函数的this在定义的时候继承自外层第一个普通函数的this。
如果箭头函数外层没有普通函数,严格模式和非严格模式下它的this都会指向window(全局对象)
箭头函数本身的this指向不能改变,但可以修改它要继承的对象的this。
箭头函数的this指向全局,使用arguments会报未声明的错误。
箭头函数的this指向普通函数时,它的argumens继承于该普通函数
使用new调用箭头函数会报错,因为箭头函数没有constructor
箭头函数不支持new.target
箭头函数不支持重命名函数参数,普通函数的函数参数支持重命名
箭头函数相对于普通函数语法更简洁优雅
注意事项
- 箭头函数一条语句返回对象字面量,需要加括号
- 箭头函数在参数和箭头之间不能换行
- 箭头函数的解析顺序相对||靠前
不适用场景
头函数的this意外指向和代码的可读性。
9.解释什么叫回调地狱 以及怎么解决回调地狱?
1.回调函数
当一个函数作为参数传入另一个参数中,并且它不会立即执行,只有当满足一定条件后该函数才可以执行,这种函数就称为回调函数。我们熟悉的定时器和Ajax中就存在有回调函数:
2.回调地狱是什么?
比如我要说一句话,语序必须是下面这样的:武林要以和为贵,要讲武德,不要搞窝里斗。
我必须要这样操作,才能保证顺序正确:
setTimeout(function () {
//第一层
console.log('111');