## es6有哪些新特性
1. **let && const**
使用let声明变量:有了**块级作用域**的概念,**没了声明提前**,**不能重复声明**
2. **iterable类型**
为了统一集合类型,ES6标准引入了新的iterable类型,Array、Map和Set都属于iterable类型,具有iterable类型的集合可以通过新的for … of循环来遍历。
3. **解构赋值和展开**
ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构
展开:...
* 解构
~~~
var obj={
name:"li",
age:21
}
var name = obj.name;
var {name,age} = obj;
~~~
* 展开
~~~
var arr = [1,2,3];
var a = 4;
var total = [...arr,a];
console.log(total);
~~~
* 赋值
~~~
function go(a=10,b=20){
console.log(a+b);
}
~~~
4. **箭头函数**
* ES6中新增箭头操作符用于**简化函数的写法**,操作符左边为参数,右边为具体操作和返回值。
~~~
//1.不引入参数
var c = () => 1 + 2;
//2.引入单个参数
var a = x => x;
//3.传多个参
var b = (x, y) => {
return x + y;
}
~~~
* 箭头函数还**解决了this关键字的指向**

5. **类**
ES6提供了更接近传统语言的写法,引入了Class(类)这个概念,**作为对象的模板**
6. **promise**
新版Ajax是一个promise
下面是一个简单的用setTimeout()实现的异步延迟加载函数:
~~~
setTimeout(function() {
console.log('Yay!');
}, 1000);
~~~
在ES6中,我们可以用promise重写:
~~~
var wait1000 = new Promise(function(resolve, reject) {
setTimeout(resolve, 1000);
}).then(function() {
console.log('Yay!');
});
~~~
7. **模板对象**
模板和插入值是在字符串里面输出变量的一种方式
ES5,组合一个字符串
~~~
var name = 'Your name is ' + first + ' ' + last + '.';
var url = 'http://localhost:3000/api/messages/' + id;
~~~
ES6
~~~
var name = `Your name is ${first} ${last}. `;
var url = `http://localhost:3000/api/messages/${id}`;
~~~
8. **模块**
ES6中可以用模块import 和export 操作
~~~
module.exports = {
port: 3000,
getAccounts: function() {
...
}
}
~~~
9. **新增继承语法**
react中基于组件,组件向外暴露
封装HTTP
- 面试自我介绍
- 面试常规题
- HTML,CSS
- 1.动画animation有哪些属性及其基本使用
- 2.transform有哪些属性及其基本使用
- 3.::before 和 :after中双冒号和单冒号 有什么区别
- 4. 如何实现一个元素的垂直水平居中
- 5. position的值relative和absolute定位原点是?
- 6. 用纯CSS创建一个三角形的原理是什么?
- 7. title与h1的区别、b与strong的区别、i与em的区别?
- 8. 使用 CSS 预处理器吗?喜欢那个?
- 9. 如果需要手动写动画,你认为最小时间间隔是多久,为什么?
- 10. 对HTML5的了解
- 11. img与文本之间的留白
- 12. 给唯一子元素margin-top,父元素跟随移动
- 13. 什么是重构和架构
- 14. css选择器的优先级别
- JavaScript
- 1. js变量声明提升
- 2.数组的方法有哪些?这些方法中不改变原数组的有哪些?
- 3. 理解undefined 和 null 区别
- 4. http与https的区别
- 5.https的原理及其局限性
- 6. let/const/var的区别
- 7. JS的内存机制与垃圾回收机制
- 8. 值类型和引用类型的区别
- 9. document.writer和innerHTML
- 10. document.ready和window.onload的区别
- 11. js有几种方法创建一个对象
- 12. 什么是面向对象?其三大特性是什么?
- 13. 数组遍历的方法
- 14. js字符串反转
- 15. 类型转换
- 1. 如何JSON对象转为字符串
- 2. 字符串转化为数字
- 3. 数组与字符串之间的相互转换
- 16. 深拷贝和浅拷贝的区别
- 17. DOM的加载顺序
- 18. call、apply、bind的区别
- 19. ES5和ES6中类的实现
- 10. new操作符的作用
- 21. 事件冒泡和事件捕获
- 22. 同步和异步
- 23. this关键字怎么理解
- 浏览器以及服务端
- 1. 前端开发有哪些优化问题
- 2. AJAX请求总共有多少种CALLBACK
- 3. 输入URL到看到页面发生的全过程
- 4. CSS和JS的位置会影响页面效率
- 5. 前端页面有哪三层
- 6. 说一下浏览器的缓存机制
- 7. 对web标准及w3c的了解和认识
- 8. 什么是路由
- 9. 状态码
- 10. 浏览器内核
- 11. MVC和MVVM的区别
- 12. cookie、session的区别
- 算法
- 1. 如何判断一个对象是否为数组
- 2. 数组去重的方法
- 3. 数组排序
- 4. 数组去重
- 5. 反转数组
- 6. 数组复制
- 7. 取偶数
- 8. 字符串去重
- 全局性问题
- 1. 谈谈对前端模块化的理解
- 2. 移动布局的单位rem,vw,rpx等
- 3. css 动画和 js 动画的差异
- 4. 谈谈对ES6的理解
- 网络数据请求
- 1. 原生Ajax请求
- 2. jQuery-Ajax请求
- 3. Vue-Ajax请求
- 4. React-Ajax请求
- vue和react
- 1. vuex的工作流
- 2. redux工作流