概念:
ES6 ==>ECMA 标准
ES6 -> 2015年6月发布 ES6.0 每年六月份发布一个版本
ES6提案通过流程: https://github.com/tc39/ecma262
Stage 0 展示阶段
Stage 1 征求阶段
Stage 2 草案阶段
Stage 3 侯选阶段
Stage 4 定案阶段
语法:
关于变量的定义(声明)
js:
var a = 11;作用域:全局,函数作用域
ES6:
1、 let:相当于之前的var
注意:没有变量提升,要求必须先定义然后使用
不可以在同一个作用域里面重复定义变量
列外 下面处理是因为不是同一个作用域
let a=4;
{
//TODO
let a= 5;
console.log(a);
}
console.log(a);
for循环中定义let 取得的是内部的变量
for(let i =0; i<9; i++){
let i=5;
console.log(i);
}
IIFE
(function(){
//TODO
})()
2、const:常量 不能改变
注意: const定义好了不能修改
定义时必须同时赋值,不能先定义后赋值
建议使用 let 不使用 var
结构解析
= 两侧保持结构格式一致 (常用于数据交互)
1、 let [a,b,c] = [1,2,3]
2、json:
let {a,b,c} = {a:1,b:2,c:3}
3、结构的时候赋予默认值
let [a,b,c='默认'] = [1,2]
字符串模板
1、拼接的字符串 ${索取变量名}
可以避免字符串拼接的麻烦
2、字符串的常用方法
str.startsWith(查询开头字符串)
str.endsWith(查询结尾字符)
重复字符串:
str.repeat(次数)
填充字符串:
str.padStart(整个字符串长度, 填充东西) 往前填充
str.padEnd(整个字符串长度, 填充东西) 往后填充
str.padStart(str.length+padStr.length, padStr)
函数
1、默认参数
function({x=1,y=1}={}){}
2、函数的参数默认是定义的变量,so不用使用let 或者const重新定义了
扩展运算符
1、对于数组 是展开数组 ...[1,2,3] ===> 1,2,3
2、对于对象 let { a, ...b} = {a:1, b:2, c:3}
3、将字符串转成字符数组 [...'hello'] ===> ['h','e','l','l','o']
4、拆分数组 (数组的解构赋值时 扩展运算符只能作用于数组的最后一位)
let [a,...b] = [1,2,3,4,5,6]
console.log(a)//1
console.log(b)//[2,3,4,5,6]
ES5 中拼接字符串 arr.concat(arr1)
ES6 ...拼接字符串 arr=[...arr1, ...arr2]
箭头函数 =>
() => 要return 的语句
() => {
逻辑处理
return
}
提示:1、this ==>定义函数所在的对象,不是运行时所在的对象
2、箭头函数里面没有arguments 用...
3、箭头函数不可以用于 构造函数
function add(a){
console.log(arguments)
//TODO
}
add(1)
哈哈~~~~
突然想起了 arguments 理解为在函数中的参数 arguments[0]是参数的实际值