day02内容
变量声明
let
局部代码块内有效
变量不提升
暂时性死区
不可重复声明
常量声明
const
必须在声明的时候初始化,值不可改变
局部代码块内有效
变量不提升
暂时性死区
不可重复声明
解构
模式匹配
数组解构
let [x,y] = [1,2,3]
[x,…y] = [1,2,3]
[x,y,z,u=10] = [1,2,3];
默认值在变量为undefined的时候生效
对象解构
{x,y} = {x:‘hello’,y:‘world’}
{x:test} = {x:‘hello’,y:‘world’}
{x:[a,b]} = {x:[1,2,3]}
a=1 b=2
{x=10,y} = {y:100}
字符串解构
[a,b] = ‘hello’;
a=‘h’ b=‘e’
{toString} = ‘hello’;
{length} = ‘hello’;
从String的prototype中解构
数值解构
{toString} = 123;
从Number的prototype中解构
布尔解构
{toString} = true;
从Boolean的prototype中解构
应用
函数参数解构
function test([a,b=10]){}
参数数组
test([1,2])
function test({a,b}){}
test({a:1,b:2})
交换两个值
[x,y] = [y,x]
…扩展运算符
let arr = [1,2,3];
复制数组
[…arr]
将参数数组转成参数列表
function test(a,b){}
参数列表
test(1,2,3);
test(…arr);
let obj = {name:'zhangsan',age:12};
复制对象
{...obj}
{
...obj,
gender:'男',
friends:[]
}
将字符串转成数组
[...'hello']
Rest参数
function test(…temp){
//temp = [1,2,3]
}
test(1,2,3);
语法扩展,功能扩展
获取原型对象
Object.prototype
obj.__ proto __