ES6新特性

1.定义函数
2.创建类
3.模块
4.let与const
5.箭头函数 arrow functions
6.字符串模板 template string
7.解构 destructuring
8.for-of循环(最简洁、最直接的遍历数组元素的语法)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
es6声明变量的6种方法:var,function,let,const,import,class
/////////////////////////////////////////////////////////////////////////////////////////////////////////////

1.定义函数(不需要function也能定义函数)

es6

var human = {
    breathe(name) {   //不需要function也能定义breathe函数。
        console.log(name + ' is breathing...');
    }
};
human.breathe('jarson');   //输出 ‘jarson is breathing...’

es5

var human = {
    breathe: function(name) {
      console.log(name + 'is breathing...');
    }
};
human.breathe('jarson');

2.创建类

4.let与const

4.1"暂时性死区"

"暂时性死区":在代码块内,使用let命令声明变量之前,该变量都是不可用的。
只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。

var tmp = 123;
if (true) {
  tmp = 'abc'; // ReferenceError
  let tmp;
}

ES6明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。

typeof x; // ReferenceError
let x;

上面代码中,变量x使用let命令声明,所以在声明之前,都属于x的“死区”,只要用到该变量就会报错。因此,typeof运行时就会抛出一个ReferenceError。

作为比较,如果一个变量根本没有被声明,使用typeof反而不会报错。

typeof undeclared_variable // "undefined"

<b>暂时性死区的本质就是</b>,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。

5.箭头函数

当我们使用箭头函数时,函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。
并不是因为箭头函数内部有绑定this的机制,<b>实际原因是</b>箭头函数根本没有自己的this,它的this是继承外面的,因此内部的this就是外层代码块的this。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ECMAScript 6.0(以下简称ES6)是、JavaScript语音的下一代标准,已经在2015年6月正式发...
    Leisure_blogs阅读 501评论 1 2
  • let和const命令 var:声明变量,更多的是全局作用域,存在变量提升 let:声明变量,存在于块级作用域,不...
    zhangivon阅读 2,488评论 1 13
  • 首先感谢Carnia帮我指出ES6箭头函数中this指向的错误,此次主要更新箭头函数中this指向问题。 ECMA...
    范小饭_阅读 8,859评论 7 21
  • ES6中比较实用的八个特性: 1.块级作用域的let和const2.箭头函数3.默认参数4.模版表达式5.多行字符...
    getElementsByMK阅读 1,140评论 0 13
  • 每日凌晨近天亮之际进门 每夜搂着猫死盯着天花板 伴过老到不能再老的老人 听过新生不到三日的啼哭 我日复一日的在打量...
    九命熠心阅读 264评论 0 0