js的数据类型
基本数据类型:null undefined Number Boolean String 引用数据类型:object es6新增的数据类型 symbol
null是对象吗?为什么?
null不是对象。虽然typeof null 会输出"object",但是这只是JS存在的一个bug,在JS的最初版本中使用的是32位系统,为了性能考虑使用低位存储变量的类型信息,000开头代表是对象然而null
检测数组的方法
- typeof 检测数组的时候会返回"object" ,所以不能用typeof检测数组
var arr= [1,2,3,4]
typeof arr//"object"
- instanceof
运算符 用于检测构造函数的
prototype属性是否出现在某个实例对象的原型链上
var arr= [1,2,3,4]
arr instanceof Array //true
- Array.isArray() ECMAScript新增了 Array.isArray()方法,这个方法的目的是最终确定某个值到底是不是数组,而不管它是哪个全局执行环境中创建的。
var arr= [1,2,3,4]
Array.isArray (arr) //true
- Object.prototype.toString
function isArray(arr) {
return Object.prototype.toString.call(arr) === '[object Array]'
}
什么是闭包?
红宝书第三版P178页 定义闭包: 闭包是指有权访问另一个函数作用域中的变量的函数 MDN对闭包的定义:闭包是指那些能够访问自由变量的函数。(其中自由变量,指在函数中使用的,但既不是函数参数arguments也不是函数的局部变量,其实就是另外一个函数作用域中的变量)
常见的content-type的类型有哪些?
text/plain 文本类型
text/css css类型
text/html html类型
application/x-javascript js类型
application/json json类型
image/png jpg gif image/*
(/.+.(png|jpg|gif)$/.test(pathname)) 匹配到图片
防抖与节流的区别
1)防抖(debounce)
所谓防抖,就是指触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间。
2)节流(throttle)
所谓节流,就是指连续触发事件但是在 n 秒中只执行一次函数。节流会稀释函数的执行频率。
模块化的区别
正确匹配11位数字
/^1\d{10}$/ ^是以开头的 \d是数字 10 表示10位
http状态码
| 类别 | 原因 | |
|---|---|---|
| 1xx | Informational(信息性状态码) | 接受的请求正在处理 |
| 2xx | Success(成功状态码) | 请求正常处理完毕 |
| 3xx | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
| 4xx | Client Error(客户端错误状态码) | 服务器无法处理请求 |
| 5xx | Server Error(服务器错误状态码) | 服务器处理请求出错 |
| 1) 2XX——表明请求被正常处理了 | ||
| 状态码 | 原因 | |
| ---- | ---- | |
| 200 ok | 请求正常处理 | |
| 204 No Content | 请求处理成功,但没有任何资源可以返回给客户端 | |
| 206 Partial Content | 是对资源某一部分请求 | |
| 2)3xx--表明浏览器需要执行某些特殊的处理以正确处理请求 | ||
| 状态码 | 原因 | |
| ---- | ---- | |
| 301 | 资源的url已经更新。永久重定向 | |
| 302 | 资源的URI已临时定位到其他位置了。临时重定向 |
3)4xx--表明客户端是发生错误的原因所在
| 状态码 | 原因 |
|---|---|
| 400 Bad Request | 服务器无法理解客户端发送的请求 |
| 401 Unauthorized | 该状态码表示发送的请求需要有通过HTTP认证(BASIC认证,DIGEST认证)的认证信息。 |
| 403 Forbidden | 不允许访问那个资源 |
| 404 Not Found | 服务器上没有请求的资源 |
| 4)5XX——服务器本身发生错误 | |
| 状态码 | 原因 |
| ---- | ---- |
| 500 Internal Server Error | 该状态码表明服务器端在执行请求时发生了错误 |
| 503 Service Unavailable | 该状态码表明服务器暂时处于超负载或正在停机维护,现在无法处理请求 |
数组去重
segmentfault.com/a/119000001…
www.zhihu.com/
重排和重绘
重绘(repaint或redraw):当盒子的位置、大小以及其他属性,例如颜色、字体大小等都确定下来之后,浏览器便把这些原色都按照各自的特性绘制一遍,将内容呈现在页面上。重绘是指一个元素外观的改变所触发的浏览器行为,浏览器会根据元素的新属性重新绘制,使元素呈现新的外观。
触发重绘的条件:改变元素外观属性。如:color,background-color等。
重排(重构/回流/reflow):当渲染树中的一部分(或全部)因为元素的规模尺寸,布局,隐藏等改变而需要重新构建, 这就称为回流(reflow)。每个页面至少需要一次回流,就是在页面第一次加载的时候。
重绘和重排的关系:在回流的时候,浏览器会使渲染树中受到影响的部分失效,并重新构造这部分渲染树,完成回流后,浏览器会重新绘制受影响的部分到屏幕中,该过程称为重绘。
重排必定会引发重绘,但重绘不一定会引发重排。
伪类和伪元素
伪类:伪类相当于一个状态开关,需要手动触发,触发开关时修改元素样式达到一个特殊的动态效果 伪类 :link :hover
伪类:存在DOM文档中,(无标签,找不到, 只有符合触发条件时才能看到 ), 逻辑上存在但在文档树中却无须标识的“幽灵”分类。
伪元素:伪元素可以比作一个假的元素,但不存在与dom树中,通常用来向元素添加小图标、清除浮动影响等 ::before ::after
伪元素:不存在在DOM文档中,是虚拟的元素,是创建新元素。 这个新元素(伪元素) 是某个元素的子元素,这个子元素虽然在逻辑上存在,但却并不实际存在于文档树中.
伪类和伪元素的根本:是否创造了新的元素, 这个新创造的元素就叫 "伪无素" 。