每日一题(持续更新)


希望你能够花上几分钟去思考这个问题,然后在评论区回答上你认为正确的答案,并且分析说明为什么会这个样子…

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. 清除浮动的几种方式,及原理?

  1. 使用空标签清除浮动 clear:both。

原理:添加一个空 div,利用 css 提高的 clear:both 清除浮动,让父级 div 能自动获取到高度

  1. 父级 div 定义 overflow:hidden

原理:必须定义 width 或 zoom:1,同时不能定义 height,使用 overflow:hidden 时,浏览器会自动检查浮动区域的高度

  1. 父级 div 定义伪类:after 和 zoom(用于非 IE 浏览器)

原理:IE8 以上和非 IE 浏览器才支持:after,原理和方法 1 有点类似,zoom(IE 转有属性)可解决 ie6,ie7 浮动问题

  1. 父级 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 跳转的场景:

  1. 域名到期不想续费(或者发现了更适合网站的域名),想换个域名。
  2. 在搜索引擎的搜索结果中出现了不带 www 的域名,而带 www 的域名却没有收录,这个时候可以用 301 重定向来告诉搜索引擎我们目标的域名是哪一个。
  3. 空间服务器不稳定,换空间的时候。
    使用 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是相对单位


文章作者: 崔行建
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 崔行建 !
评论
 上一篇
重置浏览器默认样式 重置浏览器默认样式
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, b
2020-07-31
下一篇 
JS中reduce用法详解 JS中reduce用法详解
1. 介绍reducereduce( ) 方法接收一个函数作为累加器,reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(上一次回调的返回值),当前元素值,当前索引,原数组 语法:
2020-07-22
  目录