JS
for,forEach,map的区别
for是老循环,forEach没有返回值,map会返回一个新数组
array.reduce方法
回调函数接收4个参数,初始值/上一次调用返回的值,当前被处理的元素,索引,原数组
和回调函数并列,可以传入初始值
let,const和var的区别
- var 声明的变量会挂在在winodw上,let和const不会
- var 声明的变量有变量提升,let和const没有
- let和const形成块作用域 var没有
- let不能声明同名变量 var可以,后者替换前者
- const不能变的是指向的内存地址
JS的基础数据类型有哪些
- undefined null string number boolean object symbol
- 使用typeOf 判断类型 array和null 都会返回object
如何判断一个对象是不是数组
- 使用 arr instanceof Array 返回true or false
- 使用 arr.constructor===Array 返回true or false
数组和字符串互转
- arr.toString()
- arr.join()
- string.split()
什么是类数组?如何把类数组转换成数组?
类数组就是拥有length属性,但是没有数组方法的对象
- arr.slice.call(likeArray) / Array.prototype.slice.call(likeArray)
- arr.from(likeArray)
set和weakset
- set不会有重复的值
- 使用add添加内容
- weakset和set一样,但是weakset的内容只能是对象
map和weakmap
- map就是键值对的集合,但是key可以是任意内容
- weakmap和map一样,但是weakmap的键只能是对象
什么是Symbol,它的使用场景是什么
- Symbol不会被for in 枚举出来,可以用来定义一些不需要操作和访问的属性,也叫定义私有变量
了解JS的作用域么,函数作用域是在什么时候形成的
- 作用域分为全局作用域和函数作用域
- 最大的用处就是隔离变量
浅拷贝和深拷贝
- 这个概念只在object
什么是闭包
- 是指有权访问另一个函数作用域中变量的函数
- 缺点:不能被垃圾回收,会导致内存用量增大
在浏览器中输入url至看到页面,发生了什么?
- DNS解析
- TCP连接
- HTTP请求与响应
- 客户端浏览器解析渲染
- 连接结束
- 其中浏览器解析渲染包含HTML词法、语法的解析、CSS解析、DOM树生成、渲染树建立、屏幕绘制
get和post请求的区别
- get可以被缓存,post不可以
- get的参数在url里,有长度限制
new一个对象的过程
- 创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型
- 属性和方法被加入到 this 引用的对象中
- 新创建的对象由 this 所引用,并且最后隐式的返回 this
ajax 解决浏览器缓存问题
- 请求头设置:Cache-Control","no-cache"