ES6
1、let 与const
-let 1、只能在当前的代码块中有效 2、let变量不能提升 3、不能重复声明 4、for循环体现let父子作用域
- cosnt 1、 声明必须赋值,
2、模板字符串
var obj = {
name:'李明',
age:34
}
//模板字符串
console.log('名字'+obj.name+'年龄'+obj.age);
//`名字:${obj.name} 年龄:${obj.age}`
console.log(`名字:${obj.name} 年龄:${obj.age}`);
3、简化对象的书写
var a=1;
var b=2;
var obj1={
a, //省略同名关键字
b,
setA(x){
console.log('aaaa'); //省略function关键字
}
}
console.log(obj1);
4、箭头函数
**一般形式**:
let fn1=(x,y)=>{
console.log(this);
}
fn1();
**/* 注意this指向的问题:箭头函数的this指向不是在调用时决定的,而是在定义的时候决定的
* 1、如果外部有函数,那么this指向外部函数的this
* 2、如果外部没有函数,指向window*/**
let obj={};
let fn1=(x,y)=>{
console.log(this); //window
let fn3=()=>{
console.log(this); //window
function f4() {
console.log(this); //obj
}
f4.call(obj);
}
fn3.call(obj); //call不会改变箭头函数的this指向
}
fn1.call(obj);
//call会改变普通函数的this指向
function foo2() {
let fn1=(x,y)=>{
console.log(this); //obj
}
fn1();
}
foo2.call(obj); //call会改变this指向
5、三点运算符
//三点运算符可以将伪数组转换为真数组
function args(a,b,c,d){
//获取实参列表,伪数组
console.log(arguments);
//返回这个函数本身
console.log(arguments.callee);
}
args(1,2,3,4);
//函数中的应用:真数组
function foo(...args){
console.log(...args); //1 2
console.log(args); //[1, 2]
}
foo(1,2);
//数组中的应用
let arr1=[1,2];
let arr2=[3,...arr1,4];
console.log(arr2); //[3, 1, 2, 4]
6、形参默认值
function foo(x=1,y=2){
this.x=x;
this.y=y
}
var f=new foo(); //没有实参,执行形参默认值
console.log(f);
var p=new foo(4,5); //有实参,执行实参中的值
console.log(p);