浅谈 ES6

ES6语法出来好几年了,项目中偶尔会用到es6写法,整理下个人觉得比较常用的几个语法:

一,变量声明:var ,let , const 的区别:

  1. 不存在变量提升

    • var 命令会发生变量提升现象,即变量可以在声明之前使用,值为undefined
    • let 和 const 则没有变量声明提升的功能,必须要先声明才能使用
  2. 不允许重复声明

    • var命令能重复声明,后者覆盖前者
    • let 和 const不允许在相同作用域内,重复声明同一个变量
  3. 作用域

    • var 的作用域是以函数为界限
    • let 和 const 的作用域是块作用域,块级作用域指 { } 内的范围
    • var 可以定义全局变量和局部变量,let 和 const 只能定义局部变量
    • const 的声明的常量不能被修改,但对于引用类型来说,堆内存中的值是可以被改变的。
  4. 变量作为全局属性

    • 定义的变量会作为window对象的属性,let不会

二、箭头函数 :箭头函数相当于匿名函数,并且简化了函数定义。

ES6 中函数式声明方式被箭头函数 => 取代
箭头函数:使用 => 定义函数

  1. 当函数没有参数时,()不能省略    
  2. 当函数只有一个参数,且函数体是一句代码,且是返回语句 
    参数的()可省略、函数体 {} 可省略、return 可省略、
    中间使用 => 连接    
  3. 若函数体只有一句,且不是return 语句, 不能省略 {}
  4. 若函数体有多条语句,不能省略 {}
  5. 若函数有多个参数,不能省略()    
  6. 若函数的返回值为对象,此时不能省略return。

    如果是单表达式要返回自定义对象,不写括号会报错,因为和函数体的{ ... }有语法冲突。

    注意,用小括号包含大括号则是对象的定义,而非函数主体。

使用箭头函数注意 

  1. 箭头函数不适用于声明函数
  2. 箭头函数不适用于DOM事件
  3. 箭头函数不能作为构造函数(迭代器)
  4. 箭头函数内不能使用arguments
  5. 不能使用yield命令

三、ES6模板字符串:模板字符串 反引号 ``

1.支持换行 //空白会打印出来
2.模板中传变量 ${变量}

四、ES6 新增字符串方法

五、ES6 Promise 解决回调

promise:为了解决异步编程中的回调而产生

Promise的实例需要接收一个函数作为参数
该函数又需要接收两个函数数作为参数
resolve 函数
reject 函数

then方法

参数一:是resolve函数的实现
参数二:是reject函数的实现

then方法返回值的是一个新的Promise实例

注意,不是原来那个Promise实例

若前一个回调函数返回的是一个Promise对象(即有异步操作)时,
后一个回调函数,会等待该Promise对象的状态发生变化,才会被调用。

promise的异常处理

  1. 建议总是使用catch方法。
  2. Promise 对象的错误具有“冒泡”性质,会一直向后传递,直到被捕获为止。
  3. Promise 的状态一旦改变,就永久保持该状态,不会再变了。
  4. catch方法返回的还是一个 Promise 对象
  5. catch和reject同时出现时,只执行reject

六、ES6语法 Grunt 编译时不支持。

即:grunt buile时,es6语法编译时会报错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值