希望你能够花上几分钟去思考这个问题,然后在评论区回答上你认为正确的答案,并且分析说明为什么会这个样子…
1.代码输出
function f(){
return f;
}
console.log(new f() instanceof f);
输出:false
原因:return f 导致 new f()的结果不是构造函数的一个实例
注意:instanceof 只能用来判断两个对象是否属于实例关系, 而不能判断一个对象实例具体属于哪种类型
2.代码输出
let x = "666"
if(function f(){}){
x += typeof f;
}
console.log(x)
输出:666undefined
条件判断为假的情况有: 0 、false 、’’ 、 null 、undefined 、未定义对象。
函数声明写在运算符中,其为 true,但 放在运算符中的函数声明在执行阶段时找不到的 。
另外,对未声明的变量执行 typeof 不会报错,会返回 undefined
3. CSS 优先级算法如何计算?
内联选择器:1000
ID 选择器:100
类选择器/属性选择器/伪类:10
元素选择器:1
<span style="color:red;" class="sp">我是什么颜色</span>
权重值:1000 ↑
div #container .sp{color:yellow}
权重值:1+100+10=111 ↑
最后因为 1000 > 111,所以 span 还是红色。
当然如果是在样式后面加个!important,以上计算全部作废,你加的!important 是最大值
4. 如何中断 ajax 请求?
调用 XMLHttpRequest()实例对象的 abort()方法
注意:不要用abort方法来作为终止对服务器的请求操作,只能当做在前端页面立刻停止执行ajax成功后的方法,因为你执行abort方法后,ajax很可能已经对服务端发送了请求,只是还未返回回馈信息而已。
5. 清除浮动的几种方式,及原理?
- 使用空标签清除浮动 clear:both。
原理:添加一个空 div,利用 css 提高的 clear:both 清除浮动,让父级 div 能自动获取到高度
- 父级 div 定义 overflow:hidden
原理:必须定义 width 或 zoom:1,同时不能定义 height,使用 overflow:hidden 时,浏览器会自动检查浮动区域的高度
- 父级 div 定义伪类:after 和 zoom(用于非 IE 浏览器)
原理:IE8 以上和非 IE 浏览器才支持:after,原理和方法 1 有点类似,zoom(IE 转有属性)可解决 ie6,ie7 浮动问题
- 父级 div 定义 height
原理:父级 div 手动定义 height,就解决了父级 div 无法自动获取到高度的问题。
6. Http 状态码 301 和 302 的应用场景分别是什么?
【官方定义】
301 redirect: 301 代表永久性转移(Permanently Moved)
302 redirect: 302 代表暂时性转移(Temporarily Moved )
【共同点】
301 和 302 状态码都表示重定向,就是说浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的 URL 地址
【区别】
301 表示旧地址 A 的资源已经被永久地移除了(这个资源不可访问了),搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址;302 表示旧地址 A 的资源还在(仍然可以访问),这个重定向只是临时地从旧地址 A 跳转到地址 B,搜索引擎会抓取新的内容而保存旧的网址。
【应用】
使用 301 跳转的场景:
- 域名到期不想续费(或者发现了更适合网站的域名),想换个域名。
- 在搜索引擎的搜索结果中出现了不带 www 的域名,而带 www 的域名却没有收录,这个时候可以用 301 重定向来告诉搜索引擎我们目标的域名是哪一个。
- 空间服务器不稳定,换空间的时候。
使用 302 跳转的场景:
–尽量使用 301 跳转(302 可以网址劫持:你可以使用 302 盗窃别人网站内容来提升自己网站的搜索排名(挂羊头卖狗肉),这种情况在 Google 搜索中有被封杀网站的风险)!
7. position的relative和absolute分别是相对谁进行定位的
relative相对于自己原有位置进行定位(没有脱离文档流)
absolute相对于文档或有定位的父级(脱离文档流)
8. px和em和rem的区别
px:像素,相对于屏幕像素而言
em:大小取决于父元素的字体大小,浏览器默认16px
rem:大小取决于HTML根元素的字体大小,浏览器默认也都是16px
可以使用root{}来设置根元素,通过根元素可以系统管理所有rem的值,使用时比em更加清晰具体数值。px是绝对单位,em和rem是相对单位