[TOC]
## **es6新增了哪些特性**
### 1.运用let声明变量
> 不能声明提前,不能重复定义,具有块级作用域
### 2.箭头函数,解决了this指向问题
![](https://box.kancloud.cn/deb60ac6b10f5d5cd49706d08bcc66d9_624x382.png)
```
<div id = "div">
div
</div>
<script>
var div = document.getElementById("div");
div.onclick = function(){
window.setTimeout (function(){
console.log(this);//this指向window
this.innerHTML = "change"
},100)
}
</script>
```
**bind解决方案:**
```
<div id = "div">
div
</div>
<script>
var div = document.getElementById("div");
div.onclick = function(){
window.setTimeout (function(){
console.log(this)
this.innerHTML = "change"
}.bind(this),100)
}
</script>
```
**箭头函数解决方案:**
~~~
<div id = "div">
div
</div>
<script>
var div = document.getElementById("div");
div.onclick = function(){
window.setTimeout (()=>{
console.log(this)
this.innerHTML = "change"
},100)
}
</script>
~~~
#### 箭头函数的写法:
```
<script>
var go =()=>10;//第一种
var test=()=>{
return 10;
}//第二种
var demo=()=>(10);//第三种
console.log(demo())
</script>
```
### 3.解构,展开,默认赋值
#### (1)解构
```
<script>
//解构
var obj={
name:"ccc",
age:20
}
var {name,age}=obj;
console.log(name)//ccc
</script>
```
#### (2)展开
```
<script>
var arr = [1,2,3];
var a = 4;
var total=[...arr,a];
console.log(total);//[1, 2, 3, 4]
</script>
```
#### (3)默认赋值
```
<script>
function go(a=10,b=20){
console.log(a+b);
}
go();
go(20,40)
</script>
//30 60
```
### 4.继承语法
> react中基于组件,组件向外暴露
> 封装HTTP
### 5.Promise
> 新版的ajax就是一个promise
```
<script>
var in_theaters = $.ajax({
url:"https://douban.uieee.com/v2/movie/in_theaters",
dataType:"jsonp"
})
var top250 = $.ajax({
url:"https://douban.uieee.com/v2/movie/top250",
dataType:"jsonp"
})
Promise.all([in_theaters,top250]).then(res=>{
console.log(res[0]);
})
</script>
```
### 6.Class
### 7.Generators(生成器)
> generator(生成器)是ES6标准引入的新的数据类型。一个generator看上去像一个函数,但可以返回多次。
著名的斐波那契数列为例,它由`0`,`1`开头:
要编写一个产生斐波那契数列的函数,可以这么写:
~~~
function fib(max) {
var
t,
a = 0,
b = 1,
arr = [0, 1];
while (arr.length < max) {
[a, b] = [b, a + b];
arr.push(b);
}
return arr;
}
// 测试:
fib(5); // [0, 1, 1, 2, 3]
fib(10); // [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
~~~
函数只能返回一次,所以必须返回一个`Array`。但是,如果换成generator,就可以一次返回一个数,不断返回多次。用generator改写如下:
~~~
function* fib(max) {
var
t,
a = 0,
b = 1,
n = 0;
while (n < max) {
yield a;
[a, b] = [b, a + b];
n ++;
}
return;
}
~~~
直接调用试试:
~~~
fib(5); // fib {[[GeneratorStatus]]: "suspended", [[GeneratorReceiver]]: Window}
~~~
### 8.async 函数:es6引入了 async 函数,使得异步操作变得更加方便。
- 杂(一般误入)
- Vue
- CSS
- Web前端性能优化有哪些方法
- 后端
- 嘻嘻哈哈
- 一
- 二
- 三
- 大杂烩
- 什么是HTML,什么是CSS,什么JavaScript?
- JS动画与CSS动画的差异
- HTML,CSS
- 1.px、em、rem、vw、rpx之间的区别
- 2.为什么要初始化CSS样式
- 3.CSS优先级算法如何计算?
- 4. ::before 和 :after中双冒号和单冒号有什么区别?
- 5.display:inline-block 什么时候会显示间隙?
- 6.行内元素有哪些?块级元素有哪些?如何将行内元素表现为块级元素?
- 7.css新增了哪些功能?
- 8.对html5语义化的理解
- 9.http头的expires是表示什么
- 10.bootstrap栅格系统实现原理
- 11.清除浮动的方法
- 12.使用image间隙留白问题
- 13.html分为哪些层?都代表什么?
- 14.对于web中W3C标准的理解?
- 15.用css写一个三角形?
- 16.CSS中使用表格怎么合并行,合并列
- 17.处理margin-top的bug问题
- 18.动画进度条
- 19.box-sizing的属性值
- 20.box-shadow的参数
- 21.a标签的四个状态及它们的顺序、设置title属性的效果
- 22.如何实现垂直水平居中
- 23.什么是雪碧图
- 24.h1和title、b和strong、i和em的区别
- 25.table和div+css的区别
- 26.锚点的作用是什么?如何创建锚点
- 27.margin距离问题
- 28.响应式的导航栏
- 29.进度条
- 30.img标签的title属性和alt属性有什么区别
- 31.媒体查询
- 32.CSS选择器有哪些?哪些属性可以继承?
- Javascript
- 1.面向对象的基本特征
- 2.在JavaScript中实现继承的方法
- 2.用js去除字符串空格
- 3.你怎么理解作用域?
- 4.get和post的请求?
- 5.如何理解闭包?
- 6.数组的克隆(深拷贝)的方法
- 7.es6新增了哪些特性
- 8.json对象与字符串转换
- 9.回调函数
- 10.HTML和XHML的共同点
- 11.js中把7.25转换成一个整数
- 12.循环遍历的方法
- 13.深拷贝与浅拷贝的区别
- 14.JavaScript有哪些方法定义对象
- 15.AJAX请求总共有多少种CALLBACK
- 16.js中的定时器
- 17.let、var、const的区别
- 18.==和===的区别
- 19.dom文档(自上往下)加载的顺序
- 20.string变成int型
- 21.如何判断是否为一个质数
- 22.typeof返回类型,以及比较typeof与instanceof
- 23.判断一个对象是否为数组以及数组的方法
- 24.解释一下原型和原型链、hasOwnProperty
- 25.js有哪些内置对象
- 26.new一个对象发生了什么
- 27.sass的理解
- 28.document.onLoad与window.ready的区别
- 29.什么是跨域?跨域请求资源的方法有哪些?
- 30.Ajax的优缺点及工作原理
- 31.什么是正则
- 32.贪婪模式与非贪婪(懒惰)模式
- 33.数组去重
- 34.js字符串操作函数
- 35.substring和substr传参的区别
- 36.如何实现一个原生的ajax,分成几步
- 37.如何实现一个事件绑定
- 38.事件冒泡与事件捕获的区别
- 39.事件监听
- 40.字符串下标与字符串某一个字符之间的转换
- 41.new操作符的作用
- 42.函数的定义方式
- 43.括号在JavaScipt中的作用
- 44.回调地狱
- 45.document.write和innerHTML的区别
- 46.解释一下JS同源策略
- 47.说几种DOM节点
- 48.DOM事件流
- 49.同步与异步
- 50.json和jsonp的区别
- 51.字符串去重
- 52.JS中的数据类型
- 53.this关键字指向问题
- 54.break和contiune之间的区别
- 55.如何消除事件冒泡与事件默认行为
- 56.请列举jquery中的选择器
- 浏览器及服务端
- 1.请说出三种减低页面加载时间的方法
- 2.浏览器的缓存机制
- 3.浏览器的内核
- 4.浏览器的兼容问题
- 5.src和href的区别
- 6.高质量代码具备哪些条件
- 7.HTTP请求与响应
- 8.谈谈对前端模块化的理解
- 9.严格模式与混杂模式如何区分?
- 10.重绘和重排的区别
- 11.MVC和MVVM的区别
- 12.前端页面如何解决适配的问题
- 13.写一个400错误
- 14.状态码
- 15.开发及性能优化
- 16.静态网页与动态网页的区别
- 17.如何调试网页代码?如何查看网页源代码
- 18.语义化的主要目的是什么?
- 19.如何让所有的浏览器支持ES6语法
- 20.cookie,LocalStorage,sessionStorage的区别
- 计算题
- 1.margin距离问题
- 2.math
- 3.使用js实现阶乘(1~10)
- 4.求一个数组的最大数
- 5.判断一个字符串中出现次数最多的字符,统计这个次数
- 6.质数
- 7.如何把一个字符串倒过来输出
- 取数据,渲染数据
- 1.ajax版本
- 2.vue版本
- 3.React版本
- 4.用class封装一个ajax
- 5.用回调函数封装一个ajax
- Vue,React
- 1.什么是路由?
- 2.vuex的工作流程
- 3.redux的工作流程
- 微信小程序
- 1.程序的生命周期
- 2.组件的生命周期
- 3.微信小程序页面的生命周期
- 不会的问题
- 2019/01/02
- 2019/01/03
- 2019/01/07
- 2019/01/21
- 1