es6 学习笔记
入职新公司,公司同事写页面都是es6,今天学习下,跟上节奏。
es6的主要更新的地方
1 声明变量的方式,由var变成 let 和const, var声明可以重复声明,没有块级作用域,可以无限制修改 。改成let之后,变量不能重复声明,并且有块级作用域,const声明的常量,不能修改。
// 重复声明不报错
var a = 100;
var a = 1000;
// 重复声明报错
let b = 100;
let b = 1000;
//块级作用域
if(true){
let d = 10
}
// 块外面使用报错。
console.log(d)
// 声明的常量不能修改
const PI=3.14
2 可以使用箭头函数
()=> {}
如果只有一个形参,括号可以省略,如果只有一个返回结果大括号可以省略
//之前函数写法
demo =function(a,b){
return a +b;
}
// 相当于
demo = (a,b){
return a+b;
}
// 一个形参的
demo = a=>{
console.log(a)
}
// 单返回值的
demo = (a,b)=>a*b
// 单形参,单返回值
demo =a=>a*a
3 函数参数的变化,参数可扩展,展开,默认值
function demo (a,b,...args){
}
//可扩展 ...args 承接了1,2 之后的所有参数
demo(1,2,3,4,4,5,6)
function demo1(a,b,c){
}
var arr= [1,2,3]
// 可展开
demo1(...arr)
// 默认值
function demo2(a=1,b=2){}
4 解构赋值,必须是 左右是一个东西,解构必须相等,声明和赋值不能分开,类似php list 函数
//将1,2,3的值分别付给a.b.c
[a,b,c]= [1,2,3]
[e,f,g] = ["aaa",[1,2,3],{a:1}]
5 数组新增方法 map reduce filter forEach
6 字符串多了 startsWith 和 endsWith 方法
字符串模板,反引号
let b = 100
let c = `fafafdafdaa${b}ccccc`
7 面向对象 class constructor extends
class user {
constructor(name,age){
this.name = name
this.age = age
}
// 方法简写
getName(){
console.log(this.name)
}
getAge(){
console.log(this.age)
}
}
let userObj = new user("小小",111)
userObj.getName()
userObj.getAge()
8 json的简写 变量和key相同,可以不写key
9 promise all then
10 后学补充
浙公网安备 33010602011771号