ES6学习系列重点针对ES6中新增特性进行学习,分为两个章节:
- 30分钟学会ES6 (一)
本章节主要学习let
,const
,template string
,变量解构赋值
,函数
,Set
,Map
- 30分钟学会ES6 (二)
本章节主要学习类
和模块化
。
30分钟学会ES6 (一)
let,const
let和const都是用于定义变量/常量,与以前的var类似,但是在特性上有区别,解决了var之前的一些问题。
let
-
通过
let
修饰的变量只能在所在块区域中生效,而var
在块外也可生效。var
关键字定义的变量
{ var a = 10; } console.log(a); //10
let
关键字定义的变量,只在对应块内生效,不会到块外面,也不会影响子块。
{ let b = "hello"; console.log(b);//hello } console.log(b);//undefined
-
通过
let
定义的变量可以防止循环变量延申到外部。-
var
关键词定义的循环变量
for(var i = 0;i<2;i++){
console.log(i);
};
console.log(“i=”+i); //i=2- `let`关键词定义的循环变量 从下面也可以看出,**通过`let`修饰的循环变量与块结构内的let定义的变量作用域不同** 。 ```javascript for(let i = 0;i<2;i++){ let i = "hello"; console.log(i); //abc } console.log(i);//Uncaught ReferenceError: i is not defined
-
-
同一个块结构中不能出现两次同名的let定义的变量
var
关键词定义的同名变量
{ var i = 10; var i = 11; console.log("i="+i); //i=11 }
let
关键词定义的同名变量
{ let i = 10; let i = 11; console.log("i="+i); //Identifier 'i' has already been declared }
const
const
用于定义常量,作用域和let相同,也只会在所在块结构内部生效。
const定义的变量是指向内存地址,所以不可变的是内存地址,而不是值。也就是说变量不能重新定义新的对象,但是可以修改对应的值。
const
常量作用域在块内。
{
const a = 10;
console.log(a); //10
}
console.log(a); //a is not defined
const
常量不可新建对象,但是可以修改值。
const a = [];
a = [10];//Assignment to constant variable.
a.push(10);
console.log(a);//[10]
变量解构赋值
可以同时定义多个变量,例如函数同时返回多个值(类似于java的tuple)。这种情况下只要左右参数和值对应即可,通过数组方式定义。
- 解构数组
- 设置默认值