let:
let没有预解析,不存在变量声明提升
let在同一个作用域里,不能重复定义
在for循环中,()是父级作用域,{}是另一个作用域
const:
与let一样,但const定义的变量是不能修改的,且const定义时必须有值
Object.freeze(“对象”):对象冻结,不能对该对象进行操作
var定义全局变量,属于Window
解构赋值:
let [a,b]=[1,2];
let {name,age}=json;
左右两边结构格式一致
取别名:let{name : username,age}=json;
默认值:let{name = ‘Marco’,age}=json; 当时json中name为null时,无法赋值,可用判断处理
解构可应用于数组,json,函数返回,文件引入,函数传参
字符串模版 ``
:
l
e
t
n
a
m
e
,
a
g
e
=
"
M
a
r
c
o
"
,
18
l
e
t
s
t
r
=
‘
用
户
名
:
{} : let {name,age} = {"Marco",18} let str=` 用户名:
:letname,age="Marco",18letstr=‘用户名:{name},年龄:${age} `
新增方法:
includes(’’):是否包含,返回true/false,而indexOf返回的是起始下标/-1
startsWith(’’):是否以什么开头,返回true/false,
endWith(’’):是否以什么结尾,返回true/false,
repeat(num):字符串重复
函数:
参数默认值:function(参数=“默认值”){},函数参数默认已经定义,不能在函数内部再次定义参数变量名
扩展运算符:… 三个点,function(…参数){},拆解还原数组,剩余运算符function(参数1,…剩余参数){}
字符串转数组:Array.from(str)
箭头函数:let 函数名 = ( 参数 ) => { 语句 }
this指向当前对象,不再是运行时的对象
没有arguments对象,使用扩展运算符解决参数问题
不能作为构造函数
promise:
new promise: 接收两个回调函数(resolve, reject)