es6学习入门
一、定义变量
1、let:
//1、不进行预解释,但是编译时会优先过滤一遍 let a=0; { console.log(a); //a is not defined,块级作用域中已经过滤到a,但是这个时候未定义 let a=1; }
//2、同一个作用域下面不可重复定义,不同作用域下面是不同变量 let a = 0; //let a=1; //console.log(a) // 'a' has already been declared ,已经被声明 { let a = 1; console.log(a) //1,不同作用域下面属于不同变量。 }
console.log(a) //0,获取的是全局a
//3、块级作用域 for(var i = 0; i < 4; i++) { setTimeout(function() { console.log(i) //4,4,4,4 因为setTimeout和事件绑定都是异步 }, 0) } for(let i = 0; i < 4; i++) { setTimeout(function() { console.log(i) //0,1,2,3 //每个for循环变量i作用域都不同 }, 0) }
2、const:定义常量
//1、声明时必须赋值 const a; //Missing initializer in const declaration
//2、不能重复定义 const a=0; const a=1; //'a' has already been declared
//3、不能修改 const a=0; a=1; //Assignment to constant variable
一、函数的扩展
1、函数参数默认值
//1、、函数参数默认值 function fn1(x='x'){ console.log(x) //x 没有传参,默认值为x } fn1(); //2、对象传参( function fn2({x=0,y=0}={}){ return{x,y} } console.log(fn2()) //{x:0,y:0} 未传参,赋默认值 function fn3({x,y}={x:0,y:0}){ return{x,y} } console.log(fn3()) //{x:0,y:0} 未传参,赋默认值 function fn4({x=0,y=0}={}){ return{x,y} } console.log(fn4({x:1})) //{x:1,y:0} 传入{x:0},y赋默认值 function fn5({x,y}={x:0,y:0}){ return {x,y} } console.log(fn5({x:1})) //{x:1,y:undefined} 传入{x:0},y未赋值