ES6新特性 _1

一、什么是ES 6

1、ES6全称为EMAScript 6,是由ECMA国际标准组织制定的一项针对JavaScirpt脚本语言的标准化规范,同时也新增了许多特性。是 JavaScript 语言的下一代标准。
参考文档:https://es6.ruanyifeng.com/

二、let 和 const 命令

1、let 命令

let 命令 用于声明局部变量

{
	let a = 10; 
	var b =20;
}
a //调用失败 let 声明的变量的为局部变量,只在{....}的块作用域生效。
b //20      var 声明的变量为全局变量,在全局作用域生效

2、const 命令

const 命令 用于声明一个只读常量,一旦声明了就不能改变。const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。

const a = 10; 
a = 20; //再次赋值失败 const创建的变量为常量,一旦声明了就不能改变

3、变量提升与非变量提升

变量提升指的是变量的作用域提升。常表现为:
var 声明变量可以先使用后声明,值为undefined。

consolo.log(value) //undefinedvar value = 10;12

而非变量提升指的是变量需要 先声明后使用,区别于var 声明的变量。常变现为:let声明的变量。

consolo.log(value) //报错ReferenceErrorlet value = 10;let value2 = 10;consolo.log(value) //10 123456

三、变量的解构赋值

1、什么是解构赋值?

变量的解构赋值为ES新推出的特性,指的是ES6允许按照一定的模式从数组或对象中取出值,对变量进行赋值。 如果解构不成功,变量的值就等于undefined。

语法如下:

# 数组解构let [a,b,c]  = [1,2,3]  这种写法称为模式匹配,只要 “两边”  结构一致即可赋值。
a //1b //2c //3# 数组嵌套解构let [a,[[b],c]] = [1,[[2],3]] a //1 b //2c //3# 部分解构不成功let [a,b] = [1] a //1b //undefined 部分解构不成功# 对象解构let node = {            
	sex:'fmale',
	age:10}let [sex,age] = node;sex //fmale 对象解构,对于内置对象同样可以。age //10# 拓展运算符解构let [a,...b] = [1,[2,3,4]] a //1 b //[2,3,4] 拓展运算符... 解构,下一篇文章会解释# 字符串的解构赋值let [a,b,c] = '123';a //1 b //2c //3 # 函数参数的解构赋值function add([x,y]){
	return x + y;}let value = add([1,2]) value //3 函数的参数解构赋值  形容 let [x,y] = [1,2]# 数值的解构赋值let [a,b,c] = 123a //1 数值解构b //2c //3 //原则上 只要两边的结构一致都可以进行解构赋值。123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051

2、解构赋值能指定默认值?

解构赋值可以指定默认值,使用 = 运算符
语法如下:

let [a,b=3] = [1]a //1b //3let [a,b=3] = [1,2]a //1b //31234567

3、解构赋值能起别名?

解构赋值可以起别名,使用 :运算符

let [a : one,b = 2] = [1]one //1b //2123

四、字符串的拓展

1、字符的Unicode表示法

let value = "\u0061"value // 'a'12

2、模板字符串

模板字符串指是增强版的字符串,用反引号(`)标识。

它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量,逻辑运算,以及解析javasciprt脚本语言。

语法如下:

# 普通多行字符串定义let text = 'Hello '+'

3、模板字符串默认会将字符串转义

详见官方文档 https://es6.ruanyifeng.com/

4、新增字符串的方法

① 对象方法:String.fromCodePoint( )

ES5 提供String.fromCharCode()方法,用于从 Unicode 码点返回对应字符,但是这个方法不能识别码点大于0xFFFF的字符。

ES6 提供了String.fromCodePoint()方法,可以识别大于0xFFFF的字符。语法如下:

String.fromCodePonit('\u{D834}'); // "ஷ"1

② 对象方法:字符串转义String.raw( )

ES6提供一个为字符串转义的方法。该方法返回一个斜杠前面再加一个斜杠的字符串。但实际显示的是被转义后的字符串。

常用于模板字符串,语法如下:

String.raw`Hello \n world` 
//返回结果为 Hello \\n world 
//实际返回的结果为 Helo \n world

③ 实例方法:includes(), startsWith(), endsWith()

传统上,JavaScript 只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中。ES6 又提供了三种新方法。

includes():返回布尔值,表示是否找到了参数字符串。
startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。
endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。

let text = 'Hello ! ES 6';
text.includes('Hello'); //true
text.startsWith('H'); //true
text.endsWith('6'); //true

④ 实例方法:repeat( )

repeat( args)方法表示,将一个字符串重复几次,并返回该新字符串。 args代表重复的次数,如果是小数则会向上取整。

‘q’.reoate(3);  //qqq
'mm'.repeat(3); //mmmmmm

⑤ 实例方法:padStart(),padEnd()

ES6 2017版本,提供了一个字符串两个补全方法。

padStart( num,parm) 方法:基于首位补全字符,num为补全后的字符串长度,parm为补全的字符。

'c'.padStart(3,'ab'); //abc

padEnd(num,parm)方法:基于末尾补全字符,num为补全后的字符串长度,parm为补全的字符。

'c'.padEnd(3,'ab'); //cab

⑥ 实例方法:trimStart( )、trimEnd( )

ES6 2019版本提供了两个去除空格的方法,trimStart( )、trimEnd( ),其行为是trim( )是一致的。

const text = ' abc ';
a.trim(); //'abc'
a.trimStart(); //'abc'  
a.trimEnd(); //'abc'

⑦ 实例方法:matchAll( )

matchAll( ) 一个字符串中正则匹配的所有字符子串。
详见正则表达的拓展。

⑧ 实例方法:replaceAll( )

replaceAll (‘被替换的字符’,‘要替换的字符’ ) 是ES 6新推出的实例方法,用于替换所有的指定字符。

对比以往的replace( )方法,以往的方法只能替换第一个的匹配的结果。而replaceAlll( )则替换所有。

const text = 'abca';
text.replace('a','1'); //1bc
text.replaceAll('a','1'); //1bc1


评论 (0)

发表评论

上一篇: Docker 实战总结 下一篇: ES6新特性 _2