ES6 不是什么新语言,也不是新框架,它就是原生 JS,
只不过是升过级的JS的一些写法。
定义变量:
1.let:
特点:
1)支持块作用域
2)不允许在相同作用域重复定义
块作用域:
{} let
以前: 函数作用域
2.const: 定义常量
常量: 一经定义,以后不可以再改变
正是因为这个特性,要求常量在定义时,必须赋初始值,否则以后就没机会了。
通常:约定,常量的名字全用大写字母
const PI = 3.14159265;
3.字符串:
let str = ; //反单引号 使用
来定义字符串的话,就可以用字符串模板: ${变量}
4.解构赋值
//写法1: √
var a = 10;
var b = 12;
var c = 20;
//写法2: √
var a=10,b=12,c=20;
概念:赋值等号 左边的结构和右边一模一样。
[a,b,c] = [10,12,20]; //a = 10,b=12,c=20
[a,[b,e],c] = [100,[200,300],400];
[a,{f,g},d]=[12,{90,98},4] ×
[a,{f,g},d]=[12,{f:90,g:98},4] √
let [a,{f,g},d]=[12,{f=90,g=98},4]; ×
如果在解构赋值时,碰到json格式,那么右边必须是一个合法的json
并且,json中的每一项名字是一一对应的,和顺序无关
应用1:
用于函数的json参数初始化
function sum({a=0,b=0} = {}){
a++;
b++;
return a+b;
}
5.不定参数、扩展参数 ...
原来:arguments
现在: ...
...args 是一个真正的数组。
例1:代替arguments
function sum(...args)
例2:扩展参数的作用
function sum(a,b,...agrs){
//args 除了a和b之外,其它参数的一个数组
}
****...args 必须放在所有参数的最后
例3:复制数组
1)循环每一项来复制
2)var arr2 = [...arr1]; 不是引用
3)Array.from(arr1) //不兼容IE 不是引用
6.for - of 循环
for
while
for...in
for(var name of 要循环的东西){
}
要循环的东西,可以是数组,但是不能是json
for-of循环, 不能用于循环json
7、数据格式 map
数据格式:
1)普通变量 var a = 12;
2)数组 var arr = [11,22];
3)JSON var json = {name:1,age:2};
4)map
map: 和json非常像 的一种新的数据格式(键/值 对)
1) 怎么弄一个map出来
map 是js中的一个对象
var map = new Map();
2) 增加内容
map.set('key','value');
例:
var map = new Map();
map.set('name','小红');
map.set('age',18);
3)获取内容
map.get('key');
例:
//建一个新对象
var map = new Map();
//设置值
map.set('name','小红');
map.set('age',18);
//获取值
map.get('name'); -- 小红
4)删除一项
map.delete('key');
用for-of循环,来循环map
1) 普通循环
for(var item of map){
item -> 数组
item[0]是map中的key
item[1] -> map中的value
}
2)利用解构赋值的形式
for(var [key,value] of map ){
alert(key);
alert(value);
}
3)循环map 的 entries()
for(let item of map.entries())
*默认情况下就是循环的entries,也就是说,如果不写entries(),结果是一样的
4)只想循环map中的key
for(var item of map.keys() )
只想循环map中的value
for(var item of map.values())
for-of循环数组 : entries() keys() values()
entries():
item -> [索引,值]
keys():
item -> 索引
values():
item -> 值
循环map对象时:
map.entries()
map
以上两种写法是一个效果,得到的都是map对象的每一个item,包括key和value,是一个数组形式
循环数组:
arr.entries()
得到的是数组中每一项: [索引值,值]
arr.values() —— 报错,不支持
arr.keys() —— 得到的就是数组的索引值
8.函数
原来:
function show(){...}
var show = new Function();
show();
show(a);
show(a,b);
现在:
箭头函数: =>
省略了function,加了一个箭头=>
1:
function show(){
alert(1);
}
let show = () => {
alert(1);
};
2:
function show(a){alert(a);}
let show = (a)=>{
alert(a);
}
箭头函数,只是在函数定义时,写法有区别,在调用的时候,和原来一样。
*箭头函数里的this,固定化 自己没有去外边找 最大this是window
*箭头函数里arguments不能用了
*当参数正好有一个的时候,( ) 可以省略
*当函数里面只有一句话,而且正好是return的时候,{ }和里面的return 可以省略
9.JSON 有了简写形式
当json中的name和变量名一模一样时,可以简写为以下形式:
var a = 12;
var b = 18;
var json = {a:a,b:2};
json.a -> 12
json.b -> 18
var a = 12;
var b = 18;
var json = {a,b};