es6新增哪些特性?
1.新增了let const关键字
1.let var const的区别
·let 是代码块有效 var是全局有效
·let 是不能重复声明的 var是可以多次声名
·let不存在变量的提升 var存在变量的提升
·const存储简单数据类型存储的是常量
2.新增的结构赋值
解构赋值针对数组或者对象进行模式匹配,然后对其中的变量进行赋值。
let[a,b]=[1,2]
let[user]={user:'xiaosi'}
3.新增了箭头函数
箭头函数和普通函数的区别
1.普遍函数存在着变量的提升,箭头函数没有
2.普通函数的this指向,谁调用指向谁,箭头函数是在哪定义就指向谁
3.普通函数可以当成构造函数,而箭头函数是不可以的
4.箭头函数没有arguments,要接受所有的参数用...rsst
4.js的数据类型
1.简单的数据类型
Number , String ,Boolean ,Null,undefined,Symbol
2.引入数据类型
Object Array Function Date RegExp
5. 数据类型判断(得准确的知道每一种数据类型判断缺点)
1.typeof能判断基本数据类型,返回基本数据类型小写字符串形式除了null,用typeof判断null返回Object
2.instaceof可以判断引用数据类型正常的判断A是B的实列是没有问题的,但是所有引用数据类型的对象用instanceof判断都是Object的实列
3.constructor构造函数可以判断除了undefined和null之外的任何数据类型,页解决了instanceof的问题
4. 最完美的解决方案Object.prototype.toString.call()返回的是[object数据类型]
6.es6新增了模块化
根据功能封装模块 通过import导入 然后通过export导出
可以使用export导出也可以使用export default导出
我们使用import来导入
export和export defualt的区别
1.export可以导出多个属性或者方法,需要用()括起来在用import接受的时候也得用{}接受
2.export default是以整体的方式抛出,接受的时候只接一个
7.promise
promise是es处理异步的一种方式,它本质是一个对象,promise的参数是一个回调,回调有连个参数reslove成功回调reject失败回调,它有三种状态分别为初始状态pending 已完成fulfilled已失败rejected。状态改变只有两种结果 完成或者失败
promise处理错误的方式有两种 第一种在then中传递两个回调 第二个回调是错误回调
第二种方式是通过catch方式来实现
promise常用的api有then()处理回调函数catch()捕获异常 还有两个常用的静态方式
Promise.all()一块处理多个promise请求,所有的请求都成功才成功,
promise.race()一块处理多个promise请求,有一个成功就成功。
es7中使用async实现异步处理,还有一个关键字await可以实现异步函数同步化
8.新增类class关键字
class关键字是es5构造函数+原型模式创建的语法糖。创建类的方式class类名(构造函数和方法)通过extends关键字实现继承。
需要录制的面试题:
1.js的数据类型
2.js的数据类型判断
3.箭头函数与普通函数的区别
4.let const var 的区别
5.promise
9.es6新增那些特征?
1.es6新增了promise(标题)需要说什么是promise
2.es6新增了模块化 需要说什么是模块化
3.新增了class关键字 需要解释
4.新增箭头函数 再说箭头函数与普通函数的区别
5.新增了解构赋值 需要解释什么是解构赋值
6.新增了let const关键字 需要说 let const var的区别
7.新增了简单数据类型 symbol
10,作用域与作用域链
作用域:就是变量的使用范围。js中作用域分为全局和局部
js的作用域分为全局作用域和局部作用域。在全局作用域中是不能访问局部作用域中的数据。在局部作用域中访问变量如果当前作用域中可以访问,如果上级作用域也没有就继续向上找,知道找到全局window作用域,如果window作用域也没有返回undefined,整个作用域的访问形成了一个作用域链
11. 说一下闭包
概念
闭包是指有权访问另一个函数作用域中的变量的函数。可以理解为(能够读取另一个函数作用域的变量的函数)
特征
1.函数套函数
2.内部函数可以直接访问外部函数的内部变量或者参数
3.变量或者参数不会被垃圾回收机制回收
定义
<script> //第一种定义方法 function outer(){ var num=10;}
优缺点
优点:
1.变量长期驻扎在内存中
2.避免全局变量的污染
3.私有成员的存在
缺点:
常速内存 增大内存的使用量 使用不当造成内存泄漏
12 原型与原型链
原型:每一个对象都有一个prototype属性可以挂载要扩展和方法,在prototype上挂载的属性和方法这个对象的任何实列上都可以调用。
当一个对象调用自身不存在的属性/方法时,就会prototype关联的父类对象上找。如果找不到继续去父类关联的对象上找,直接找到Object的属性和方法,找到直到调用,找不到undefined
13,对象的浅拷贝与深拷贝
由于引用数据类型的数据是存储在堆空间中,在栈空间中存储的是是数据的引用地址。
对象的浅拷贝解释将栈空间中的地址复制一份,两个地址指向的同一个数据
浅拷贝可以使用Object.assign()来实现 深拷贝可以使用JSON.stringifty()先转换为json的串复制,然后再通过JSON,parse()转换回来
14.说一下js的事件机制
js中存在两种事件机制,一个是is提出的冒泡事件机制还有一个是王景提出的捕获事件机制冒泡事件机制是先触发监听 addEventListener的第三个参数默认的为false是冒泡 为true是捕获 我们可以通过event。stopPropagtion()来实现
15.rem布局的原理
1rem的大小就是根元素<html>的font-size的值,通过设置 根元素<html>的font-size的大小,来控制整个html文档内的字体大小 元素宽高,内外边边距等
16.如果实现响应式布局
响应式布局可以让网站同时适配不同分辨率和不同的手机端,让客户有更好的体验
响应式布局实现的方案:
1.百分比布局
2.媒体查询
3.rem布局
4.vw vh布局
5.flex弹性盒布局
17.$route和$router的区别
$route是一个跳转的路由对象,每一个路由都会有一个$route对象,是一个局部的对象,可以获取对应的name,push,params,query等
$router是VueRouter的一个对象,通过Vue.use(VueRouter)和Vue构造函数得到一个router的实列对象,这个对象中是一个全局的对象,他包含了所有的路由,包含了许多关键的对象的属性。
18.params和query传承的区别
1.params传值的参数是路由的一部分,所有调转必须加参数值才能调转query传参和路由配置没有关系
2. 获取方式是不一样的query this.$route.query.参数名 params是this.route.params.参数名
19.mpa和sps的区别
mpa多页面应用
一套系统有多个页面组成,页面之间的切换是由a标签的herf性和script的location.href来实现的
spa是单页面应用
一套系统就由一个页面来继承,数据的切换是由路由实现mpa与spa的优缺点:
·对于切换来说,路由的切换肯定比页面的切换更顺畅所以spa的切换会好
·spa的首屏加载慢,mpa的首屏加载快