ES6新特性:
在实际开发中,ES6已经非常普及了。掌握ES6的知识变成了一种必须。尽管我们在使用时仍然需要经过babel编译。
ES6彻底改变了前端的编码风格,可以说对于前端的影响非常巨大。值得高兴的是,如果你熟悉ES5,学习ES6并不需要花费太多的时间就可以掌握,因为常用的基础语法并不多,花少量的时间,就可以开始我们的ES6之旅了。
这篇文章不会详细的告诉你ES6的每一个细节知识,只会根据我自己的开发经验,将我在实际开发中常常用到的知识点分享给大家,给大家学习ES6一个方向的指引。这是因为考虑到很多同学虽然知道ES6的重要性,但是不知道自己需要掌握那些ES6的知识,也不知道这些知识需要掌握到什么程度,这给新手朋友带来了许多困惑,因此这篇文章就算是一个划重点吧,掌握这些,就可以轻轻松松得进行进一步学习了。
一、let变量的声明以及声明特性
//声明变量
let a;
let f,b,c;
let e=100;
//1、变量不能重复声明
let star="repetition";
let star="mistake"; //这样声明会报错
//2、模块作用域、全局、函数、eval
{
let module = "模块";
}
console.log(module); //调用会报错
//3、不存在变量提升
console.log(ahead) //提前调用会报错
let ahead = "提前";
//4、不影响作用域链
{
let school="学校";
function fu(){
console.log(school);
}
}
fu();
二、const声明常量以及特点
- //声明常量
const SHOOL= “学校”;
//1、一定要赋初始值
const A; //会报错
//2、一般常量使用大写(规范)
const a=100;
//3、常量值不能修改
SHOOL = “xuexiao”;
//4、模块作用域
{
const AHEAD=“XUEXIAO”;
}
console.log(AHEAD);//调用会报错,模块作用域
//5、对于数组和对象的元素修改,不算对常量的修改,不会报错
const TEAM = [‘A’,‘B’,‘C’];
TEAM.push(‘D’);//不会报错
TEAM = 100; //会报错
三、结构赋值
-
//1、结构赋值 const five=['一','二','三','四']; let [noe,two,three,four] = five; console.log(noe,two,three,four); //2、对象结构 const construction = { name:'学校', age:'18', effect:function(){ console.log("老师教书育人"); } } let {name,age,effect}=construction; console.log(name,age,effect);
四、模板字符串
-
//1、字符串声明 let str =`字符串声明`; console.log(str,typeof str); //2、直接出现换行符 let mirror = ` <ul> <li>学校</li> <li>老师</li> </ul> `; //3、变量的拼接 let speak = `先生`; let out = `陆${speak}`; console.log(out);
五、箭头函数
-
//1、声明一个箭头函数 let fu=(a,b)=>{ return a*b; } //2、调用函数 let ride=fu(3,4); console.log(ride); //3、this是静态的,this指向函数声明所在作用域下的this function name1(){ console.log(this.name); } let name2=()=>{ console.log(this.name); } window.name='读书'; const school={ name:"ATAT" } //直接调用 // name1(); // name2(); //call方法调用 name1.call(school); name2.call(school); //体现this是静态的,this指向函数声明所在作用域下的this //4、不能作为构造函数实例化对象 let person=(name,age)=>{ this.name=name; this.age=age; } let me=person(先生,18); console.log(me); //调用失败,箭头函数不能实例化对象 //5、不能使用arguments变量 let fu2 = () =>{ console.log(arguments); } fu2(1,2,3) //6、箭头函数缩写 //-省略小括号,当形参有且只有一个的时候 let add = n =>{ return n*n; } console.log(add(8)); //-省略话括号,当代体只有一条语句的时候,此时return必须省略,语句的执行结果就是函数返回值 let pow=(n)=> n+n; console.log(pow(4))
六、rest参数使用
-
//ES6引入rest参数,用于获取函数的实参,用来代替arguments //1、ES5获取实参的方式 function date(){ console.log(arguments); } date('老师','学生','书本'); //2、rest参数必须放到参数最后 function dte(...arg){ console.log(arg); } dte(12,2,31,2,1,32,1,2)
七、扩展运算法的介绍
-
//1、扩展运算符能将[数组]装换为逗号分隔的[参数序列] const eat=['中午','吃饭','米饭','青菜']; function rice(){ console.log(arguments); } rice(...eat); //2、数组的合并 const cup = ['杯子','水']; const spoon = ['勺子','筷子']; const merge=[...cup,...spoon]; console.log(merge); //3、数组克隆 const copy = ['C','O','P','Y']; const copy1 = [...copy]; console.log(copy,copy1);