前端-ES6合集 持续更新

1.关于变量和常量

let

let 用来声明变量,类似于变量,但是所声明的变量,只在let命令所在的代码块内有效
需要注意的地方:
1.不存在变量提升,未声明直接报错
2.暂时性死区
3.for循环具有两个作用域,外面的变量和里面的变量互不干扰

const

用来声明一个只读的常量,一旦尚明,常量的值就不可以改变了,而且声明的时候必须赋值
需要注意的地方:

引用类型储存的是一个地址,所以用const声明的引用数据类型,只要不改变指针地址,就可以
如果为常量赋其他的值,就会报错。

2.总结常用的es6语法

1、Let:声明的变量,只作用于使用了let命令的代码块
2、const :声明一个常量,声明过后,就不可修改其值(会报错)
3、解构性赋值
3、箭头函数:用法的两个明显的优点: * 函数的写法更加简洁 * 
箭头函数内部没有自己的this对象,而是全部继承外面的,
所以内部的this就是外层代码块的this。
4、字符串模板:ES6中允许使用反引号 ` 来创建字符串,
此种方法创建的字符串里面可以包含由美元符号加花括号包裹的变量${vraible}
5、Proxy:Proxy可以监听对象身上发生了什么事情,
并在这些事情发生后执行一些相应的操作
6、循环:for of 实现数组的遍历(以及keys(),value(),entries()等方法)

3.说说对es6的理解(说一下es6,知道es6吗)

1.语法糖(箭头函数,类的定义,继承),
2.以及一些新的扩展(数组,字符串,对象,方法等),
3.对作用域的重新定义,
4.以及异步编程的解决方案(promise,async,await)、
5.解构赋值的出现

4.ES6的常见特性

变量定义(let和const,可变与不可变,const定义对象的特殊情况)
解构赋值
模板字符串
数组新API(例:Array.from(),entries(),values(),keys())
箭头函数(rest参数,扩展运算符,::绑定this)
Set和Map数据结构(set实例成员值唯一存储key值,map实例存储键值对(key-value))
Promise对象(前端异步解决方案进化史,generator函数,async函数)
Class语法糖(super关键字)

5.对ES6中Promise的理解

Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大
所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件
(通常是一个异步操作)的结果。
从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。
Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。
 特点: 
1、自己身上有all、reject、resolve这几个方法
​2、原型上有then、catch等方法 
3、一旦建立,就无法取消,这是它的缺点



Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件监听——更合理和更强大。
Promise 有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。
但是无法获取到pending状态,在promise中接受两个内置参数分别是resolve(成功)和reject(失败),
Promise实例生成以后,可以用then方法分别指定resolved状态和rejected状态的回调函数。
then方法可以传递两个回调函数第一个是成功,第二个是失败,
失败回调也可以使用promise的catch方法回调,
promise还有一个强大的功能那就是all方法可以组合多个promise实例,包装成一个新的 Promise 实例。

6.介绍一下async和await

 async 会将其后的函数(函数表达式或 Lambda)的返回值封装成一个 Promise 对象,
 而 await 会等待这个 Promise 完成,并将其 resolve 的结果返回出来

async / await是ES7的重要特性之一,也是目前社区里公认的优秀异步解决方案。
目前async / await 在 IE edge中已经可以直接使用了,
但是chrome和Node.js还没有支持。

幸运的是,babel已经支持async的transform了,所以我们使用的时候引入babel就行。
在开始之前我们需要引入以下的package,
preset-stage-3里就有我们需要的async/await的编译文件。

7.ES6如何转ES5

使用Babel 转码器,Babel 的配置文件是.babelrc,
存放在项目的根目录下。使用 Babel 的第一步,就是配置这个文件。

8.ES6 中新增的数据类型有哪些

Set 和 Map 都是 ES6 中新增的数据结构,是对当前 JS 数组和对象这两种重要数据结构
的扩展。由于是新增的数据结构

Set 类似于数组,但数组可以允许元素重复,Set 不允许元素重复 
Map 类似于对象,但普通对象的 key 必须是字符串或者数字,
而 Map 的 key 可以是任何数据类型 

9.箭头函数的作用域上下文和 普通函数作用域上下文 的区别

箭头函数其实只是一个密名函数的语法糖,

区别在于普通函数作用域中的this有特定的指向,一般指向window,

而箭头函数中的this只有一个指向那就是指当前函数所在的对象,

其实现原理其实就是类似于之前编程的时候在函数外围定义that一样,

用了箭头函数就不用定义that了直接使用this

10.ES6 class 和普通构造函数的区别

class 其实一直是 JS 的关键字(保留字),但是一直没有正式使用,直到 ES6 。

ES6 的 class 就是取代之前构造函数初始化对象的形式,从语法上更加符合面向对象的写法

class 是一种新的语法形式,是class Name {...}这种形式,
和函数的写法完全不一样    
两者对比,构造函数函数体的内容要放在 class 中的constructor函数中,
constructor即构造器,初始化实例时默认执行 
class 中函数的写法是add() {...}这种形式,并没有function关键字 

而且使用 class 来实现继承就更加简单了
在class中直接extends关键字就可以实现继承,而不像
之前的继承实现有多种不同的实现方式,在es6中就只有一种
注意以下两点:

使用extends即可实现继承,更加符合经典面向对象语言的写法,如 Java

子类的constructor一定要执行super(),以调用父类的constructor

11.es6中的Module

ES6 中模块化语法更加简洁,使用export抛出,使用import from 接收,

如果只是输出一个唯一的对象,使用export default即可

// 创建 util1.js 文件,内容如

export default {

a: 100

}
// 创建 index.js 文件,内容如

import obj from './util1.js’

如果想要输出许多个对象,就不能用default了,且import时候要加{…},代码如下

// 创建 util2.js 文件,内容如

export function fn1() {

alert('fn1')

}

export function fn2() {

alert('fn2')

}
// 创建 index.js 文件,内容如

import { fn1, fn2 } from './util2.js’

12. 谈一谈你对ECMAScript6的了解?

ES6新的语法糖,类,模块化等新特性

关于ES6参考链接:http://es6.ruanyifeng.com/

\1. ECMAScript 6简介

\2. let和const命令

\3. 变量的解构赋值

\4. 字符串的扩展

\5. 正则的扩展

\6. 数值的扩展

\7. 数组的扩展

\8. 函数的扩展

\9. 对象的扩展

\10. Symbol

\11. Proxy和Reflect

\12. 二进制数组

\13. Set和Map数据结构

\14. Iterator和for...of循环

\15. Generator函数

\16. Promise对象

\17. 异步操作和Async函数

\18. Class

\19. Decorator

\20. Module
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
redux、react和webpack是目前非常流行的前端技术,它们可以帮助我们快速构建复杂的单页面应用。而热加载是一种非常方便的开发工具,能够在我们修改代码后自动重新编译并刷新页面,极大地提高了开发效率。 然而,IE8是一个老旧的浏览器,在支持新技术的同时也存在很多兼容性问题。要使我们的应用在IE8上运行,我们需要进行一些特殊的处理。 下面是一些可能有用的技巧: 1. 使用babel进行ES6代码转换:redux和react都使用了一些ES6语法,而IE8并不支持这些语法。我们可以使用babel将ES6代码转换为ES5代码,从而在IE8上运行。同时,我们还需要使用babel-polyfill来提供一些ES6新特性的支持。 2. 使用es5-shim来提供一些ES5新特性的支持:IE8对ES5的支持也不完整,我们可以使用es5-shim来提供一些ES5新特性的支持。 3. 使用es6-shim来提供一些ES6新特性的支持:IE8对ES6的支持更加有限,我们可以使用es6-shim来提供一些ES6新特性的支持。 4. 使用webpack的兼容性插件:webpack提供了一些兼容性插件,可以自动处理一些兼容性问题,比如babel-loader、es3ify-webpack-plugin等。 5. 使用react-ie8来提供react在IE8上的支持:react-ie8是一个为react提供在IE8上支持的库,可以很方便地解决一些兼容性问题。 6. 使用redux-ie8来提供redux在IE8上的支持:redux-ie8是一个为redux提供在IE8上支持的库,可以很方便地解决一些兼容性问题。 总之,要使我们的应用在IE8上运行,需要进行一些特殊的处理,包括使用babel进行ES6代码转换、使用es5-shim和es6-shim来提供一些新特性的支持、使用webpack的兼容性插件、使用react-ie8和redux-ie8来提供在IE8上的支持等。这些技巧需要不断地更新和完善,以适应不断变化的前端技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zmmsdk15225185085

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值