一、声明语法
1. ES5原语法声明
var:变量声明
缺点:
具有变量提升,也就是常说的预解析
可以重复声明,因为内部有容错机制。
没有块级作用域一说,只有全局作用域跟局部作用域,而且是在以函数为界限。
没有常量这一说,这就导致在写代码的时候,声明的某个变量,但是又不希望它进行改变,这个时候var的可重复声明赋值,就会导致程序出错。
2. ES6语法声明
let:变量声明
同
var
相比的优点:使用
let
会产生一个块级作用域。作用域以{}
为区分,如果没有在{}
内部声明,那么产生的作用域就是在全局环境下。let
声明的变量不允许重复声明,但是允许在产生的作用域中,进行改变值操作let
声明的变量并不会像Var
一样有变量提升的问题
const常量声明
用
const
定义常亮的同时也需要赋值。不然会报错定义的常量不允许再次被声明,也不允许再次将声明的常量赋值。
用
const
声明的引用数据类型,虽然不能重复声明,但是可以增加或者修改里面的属性。
二、解构
1. 函数解构
在进行函数解构的时候,函数里的属性,需要跟外部解构声明的变量名一样
1 | let obj={name:'小明',age:14,gender:'男'}; |
2. 数组解构
在进行数组解构的时候,是根据数组索引查找的,所以声明的变量名没不要非要一样。
1 | let arr = [13,56,78,24]; |
三、箭头函数
1. 原始函数状态
原始函数(ECMAscript5)内部作用域中,this指向是,谁调用函数,this就指向谁。
1 | var fn = function(){console.log(123)} |
2. ES6箭头函数
箭头函数内也存在块级作用域,也遵循作用域查找规则,但是箭头函数内部
this
永远指向箭头函数外面的this
对象。并且一旦定义了箭头函数,它内部this
的指向就定了,之后就不会发生改变。
也就是说,箭头函数内没有this
- 写法1:
1 | (形参列表) => {函数体} |
- 写法2:当函数右边只有一行代码的时候,大括号可以省略,这样系统默认会返回箭头右边的计算的结果。
1 | let fn = (x,y) =>console.log(x + y} |
- 写法3:当函数左边只有一个形参的时候,右边的小括号也可以省略
1 | let fn = x => console.log(x); |
四、ECMA6数组的新增方法
1. reduce方法:汇总 (不管给多少数值的数组,最后只会返回一个值。)
这个方法使用时,reduce方法有两个参数,第一个参数为回调函数;第二个为中间变量的初始值,如果不传,默认中间变量的初始值为数组的第一项。
第一个回调函数的行参数有三个,第一个行参数为使用reduce方法的中间变量值,第二个为当前传入函数内的值,第三个为传入当前函数内的值的索引。
1 | let arr =[134,13,67,56]; |
使用
reduce
方法会有一个返回值,返回的是调用reduce
方法在匿名函数内部操作之后的最终结果值。
1 | let arr = [23,45,65,24]; |
2. map方法(映射):类似于轮询,这个函数会将数组中每一个元素都拿出来,然后进行相关操作。
1 | let arr =[90,87,38,56]; |
3. filter(过滤器): 留下满足条件的,删除不满足条件的。
1 | let arr = [ |
上面的代码中,箭头左边的
json
是将对应数组中每一项当做实参传入到函数内,然后进行相关操作。
4. forEach:循环遍历(也叫迭代)
1 | let arr = [14,5,7,4]; |
五、字符串
ES6新增了两个方法,
startWith
: 以什么开头。endWith
: 以什
么结尾;//使用这两个方法返回的结果为boolean
值。
1 | let str = '2gdgffdhff'; |
模板字符串
- 原字符串拼接
在原来要拼接大量字符串的时候,需要用引号包起来,然后内部的变量需要用加号相连
1 | let title = '我是长腿欧巴'; |
ES6字符串模板
1
2
3
4
5
6let title = '我是长腿欧巴';
let content = '但若此相似,不复初相见'。
let str2= `<div>
<h1> ${title} </h1>
<p> ${content} </p>
</div>`从上面的代码可以看出只需要用(反单引号包裹),中间需要更换的变量,可以用
${ 需要更换的变量名 }
包裹。
评论加载中