这是我参与「第四届青训营 」笔记创作活动的的第20天,今天主要记录的内容是记录学习es6新规范,可以做到查缺补漏,ES6小字典。
一、文章内容
本文会围绕下面列出的内容进行一个一个介绍.
-
es6简单介绍
-
let和const
-
字符串模板
-
箭头函数this的考点
-
数组的简单用法
-
对象的使用
-
set和map使用
Es6简单介绍
es6简单来讲就是一句话,在es5的基础上升级了,这不是废话吗,当然,es6就是一套新规范将JavaScript代码变得简洁高效、并不是一个新的语言,我当时学的事和疑惑很大.就是一些新奇的语法而已.
let和const
熟悉的小伙伴一定知道这是俩个声明变量的语法,let声明的变量只在代码块起作用,const声明的变量不可以修改值,一旦声明赋值终身不可修改,跟dr差不多.
let使用演示
let的特点是不可以先使用后定义图1、有区域性(生命周期)图2、只可以声明一次图3.
图1 没有变量提升
图2 作用域范围
图3 不可多次声明
const
const声明的变量值不可以改,但是指向地址的对象可以改、同样没有变量提升,如图4.图5.
图4 const不可改
图5 照样保错
字符串模板
`` 的普通用法一个是多行字符串,高级用发就是${}配合美元符号加变量.
1.普通用法输入什么格式输出就是什么格式模板.如图6所示.
图6 普通用法
2.高级用法加变量名,方便了开发人员输出信息,不用+号或者逗号了,省去很多麻烦。如图7所示.不但可以加变量名,而且还可以加运算符,比如age+10,如图8所示。更加牛逼的是alert的用法可省掉括号和冒号,还有函数调用也可以加到里面.如图9所示.
图7 高级用法
-----图8 高级运算符
图9 调用函数
以上就是字符模板调用了,可以帮助我们少些好多逗号和加号.es6的特点也慢慢体现出来了.箭头函数
箭头函数其实跟JavaScript中的普通函数差不多,就是变得更加简单化了,不用写function然后直接箭头,语法是这样:
参数 => 函数体
比如一个名为a的函数返回a.
let a = () => 'a';
如果函数包涵多个参数需要加括号,如果不加就是默认没有参数加个()即可,如果语句较多则需要加{}.
let f = (a,b) => a+b;
alert(f(1,1)); // 2
如果函数需要返回对象,需要在花括号外面嵌套一个().
let f = () => ({'name':'name'});
注意:箭头函数不可做为构造函数不可以new对象,因为它的构造器是windows的,并且箭头函数没有 arguments这个参数.因为没有prototype.
this:如果普通函数被调用,那么this就是函数本身,如果是箭头函数被调用那么this就是他父级的this,因为它没有自己的this,其this指向从外层代码库继承。也就是人们常说的上下文,接下来教大家如何分辨上下文.
var Person = {
'age': 18,
'sayHello': ()=>{
console.log(this.age);
}
};
var age = 20;
Person.sayHello(); // 20
// 此时 this 指向的是全局对象
var Person1 = {
'age': 18,
'sayHello': function () {
console.log(this.age);
}
};
var age = 20;
Person1.sayHello(); // 18
// 此时的 this 指向 Person1 对象
为什么最上面的age打印的是20,仔细一看,原来是全局变量的age=20,所以输出了20,此时箭头函数的this指向的是person这个对象的环境,此时环境this指向是window,所以在Window下找到一个age的变量输出来,然后下面的sayhello()是普通函数,是person1调用的所以默认this指向person1. 下面看一下这个案例,为什么俩个都输出是window ,第一个输出window因为箭头函数本身没有this,所以就往上寻找,对象t是window的一个对象,所以此时的this就是window本身;为什么第二个输出也是window,因为第二个talk()调用是单独调用,作为全局调用,所以也挂载在window上.
let t = {
age : 15,
say: ()=>{
console.log(this); // window
function talk(){
console.log(this) // window
}
talk();
}
}
t.say();
总结
本文主要简单引入了es6,简单的介绍了let、const声明变量其次介绍了字符模板常见格式显而易见的体现了es6的高效性,以及箭头函数的奇妙之处,下节课的内容更能将es6的特点显现出来,如果有不懂的地方敲一遍就懂了,还是不懂欢迎留言.