ES6有哪些新特性

 1.新增了let和const两个块级作用域;和var一样都是定义变量的关键字,var是es5里面的;let和const是es6里面的;
        区别:let声明的变量不可以自动提升;var声明的可以自动提升;let不允许在相同作用域里,重复声明一个变量,var可以;
        let允许块级作用域的任意嵌套,外层无法读取内层作用域的变量,var可以;let声明的作用域只在当前代码块的{}内有效,let可以解决for循环i全局变量污染的问题;
        const声明的是一个只可以读的常量。只要声明,常量的值就不可以改变。他和let一样const也是一个块级作用域,无法变量提升,重复声明
2.新增了箭头函数
        箭头函数和普通函数的不同:他们的写法不同;this指向不同:箭头函数指向的是定义时的对象,普通函数是指向调用它的对象;
        箭头函数不可以当作构造函数,就是不可以使用new命令,否则报错;箭头函数没有arguments对象,得到的是外层函数的参数;
        
        总结:箭头函数,最开始就是为了解决this指向问题,箭头函数里面的this是定义的时候确定的,this一旦确定无法改变,箭头函数最好的就是简洁;
        同时箭头函数一定是匿名函数,箭头函数适合于没有复杂逻辑和无副作用的纯函数场景下,比如map,filter的回调函数中;
        最好不要在最外层定义箭头函数,因为在函数内部操作this会容易污染全局作用域。在箭头函数外部包一层普通函数,可以将this控制在可见范围内;
3.增加了解构赋值
4.模板字符串
        传统的输出模板特别繁琐,而且容易拼接错误
        ES6中的模板字符串是增强版的字符串,用反引号``,标识,它可以当做普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量;
        模板字符串里还可以2放入花括号,在花括号里边可以写入任意JS表达式,还可以引用对象属性。而且模板字符串还可以调用函数;
5.ES6还新增了Set和Map数据结构
        Set对象他类似于数组,且成员的值都是唯一的。他常见的方法有5种:add():添加某个值然后返回Set结构本身。size()返回Set实例的成员总数;
           delete()删除某个值,返回一个布尔值,表示是否删除成功;has()返回一个布尔值,表示该值是否为Set的成员。clear()清除所有成员,没有返回值;
           Set集合中的数据不允许有重复,可以做数组去重1.(...new set(arr))  2.arr.forEach(item => set.add(item));
        Map对象是键值对集合,和JSON对象类似,但是key不仅可以是字符串还可以是对象;
        Map常见的方法也有5种:map.set()可以获取对象的属性;get()可以获取对象的name属性;size()获取元素的存储数;has()可以知道指定元素是否
           存在;delete()可以删除指定属性
6.把for循环改为for of循环
        for in是es5的标准,用来遍历Key值,遍历对象和数组,for of是es6的标准,用来遍历value值,遍历数组,不能遍历普通对象;
        因为普通对象没有symbol属性,如果对象拥有symbol属性,就可以使用for of遍历;
        symbol是es6新增的一种基本数据类型,他是一个独一无二的数据类型,在es5中对象属性名字都是字符串容易造成属性名冲突,为了避免这种情况
        Es6就引入了symbol类型,Symbol值能够作为对象属性的标识符;
        使用for in会遍历数组所有的可枚举属性,包括原型,所以for in更适合遍历对象;
        for in遍历的是数组的索引,for of遍历的是数组的元素值
7.Es6新增了模块化
        在Es6之前是JavaScript是没有模块系统的,那么他就无法将一个大程序拆分成若干个互相依赖的小文件;如果需要进行模块化操作,就需要从第三方引入;
        在ES6中就提供了模块化,才让JavaScript第一次支持了module。ES6的模块化分为导出(export)和导入(import)两个模块;
        模块可以理解为和函数代码块一样的功能,是封装对象的属性和方法的JavaScript代码,他可以是某单个文件,变量或者函数
        而且引入模块和引入脚本是有区别的,前者更多的是按需引入加载,后者是无论使用还是不使用,全部一次性引入和加载,类似于通过script标签引入Jquery等,这些都是一次性引入的;
        导出:Es6模块导出分为默认导出和指定导出,默认导出的话可以用任意名字来接收,比如导出的是export default module1; 接收的时候可以 import x,
        如果要一次导出多个,需要用{}包裹,接收时必须与导出时同名 
        接收:接收用import {name,age} from './module.js'
        在导出中除了export关键字,每一个声明必须和脚本中的一样,因为导出的函数和声明需要有一个名称;
        导出数据,只需要在里边写上数据名就可以export {name,age} 导出函数只需要你定义好函数,然后把函数名导出就可以export sum;
8.    (...)扩展运算符:用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中。
9.新增了Promise关键字

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ES6(ECMAScript 2015)是JavaScript的一个重要,引入了许多新的语法和功能。以下是ES6的一些主要特性: 1. 块级作用域:引入了let和const关键字,可以在块级作用域中声明变量,解决了var关键字的作用域问题。 2. 箭头函数:使用箭头(=>)定义函数,简化了函数的写法,并且自动绑定了this。 3. 默认参数:函数参数可以设置默认值,简化了函数调用时的参数传递。 4. 模板字符串:使用反引号(`)包裹字符串,可以在字符串中插入变量和表达式,提供了更方便的字符串拼接方式。 5. 解构赋值:可以从数组或对象中提取值,并赋给变量,简化了变量的声明和赋值过程。 6. 扩展运算符:使用三个点(...)可以将数组或对象展开,方便地进行数组合并、复制和对象属性的拷贝。 7. 类和模块:引入了class关键字,可以使用面向对象的方式定义类和继承关系。同时,也支持模块化的导入和导出。 8. Promise:提供了一种更优雅的处理异步操作的方式,解决了回调地狱的问题。 9. 简化对象属性的定义:当属性名和变量名相同时,可以直接写属性名,省略冒号和赋值符号。 10. 简化迭代器和生成器:引入了for...of循环,可以更方便地遍历数组和类数组对象。同时,也支持生成器函数,可以通过yield关键字实现暂停和恢复执行。 11. 模块化的导入和导出:使用import和export关键字,可以将代码分割成多个模块,提高了代码的可维护性和复用性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值