ES是什么?跟JS有什么关系

ES时ESMAScript的简称,

JS由三部分组成,ESMAScript,BOM,DOM,

ES是JS中的语法规范;

BOM全称Browser Object Model,浏览器对象模型,主要处理浏览器窗口和框架,提供了独立于内容而与浏览器进行交互的对象。

DOM全称Document Object Model,文档对象模型,是HTML和XML文档的编程接口;它提供了对文档的结构化的表述,并定义了一种方式可以使从程序中对该结构进行访问,从而改变文档的结构,样式和内容。

 

let/const/var的区别

知网下载的es6怎么变成PDF 知网es6文件_字符串

 

浏览器兼容ES6

安装node,用npm安装babel

npm install babel-core@5

 

引用babel

我们把browser.min.js引入(文件位置的路径要确保正确)。并且设置第二个script标签的type为”text/babel”。

 

解构赋值

ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构赋值(Destructuring)。

 

传统的变量赋值

var arr = [1,2,3]

var a = arr[0]

var b = arr[1]

var c = arr[2]

 

ES6解构赋值

var [a,b,c] = [1,2,3]

 

数组的解构赋值

解构赋值是可以嵌套的

var [a,b,[c1,c2]]  = [1,2,[3.1,3.2]]

 

不完全解构赋值

 

var [a,b,c] = [1,2]

当左边的模式(你可以理解为格式)与右边不完全一样的时候,那么赋值过程中,只会给模式匹配成功的部分的变量赋值,例如:变量c没有在右边找到匹配的模式,所以无法进行赋值,但这并不影响变量a和变量b的赋值,因为它们在右边找到与之匹配的模式,这种叫做不完全解构。

 

允许设置默认值

 

var [a,b,c=3]  = [1,2]

var [a,b,c=3] = [1,2,4]

 

这个时候默认值3会被新的值4覆盖,c的值为4;注意:当新的值为undefined的时候,是不会覆盖默认值的

 

对象的解构赋值

 

var  {a,b,c}  = {"a":1,"b":2,"c":3}

 

var {a,b,c} = {"a":1,"c":3,"b":2}

 

这两段代码虽然有区别,但是结果都是一样的。

对象的解构赋值不会受到属性的排列次序影响(数组则会受影响),它是跟属性名关联起来的,变量名要和属性名一致,才会成功赋值。

var{ a }   = {"b":2}

如果变量找不到与其名字相同的属性,就会赋值不成功

 

如果你想给一个变量名与属性名不一样的变量解构赋值,可以这样写:

var { b:a }  =  { "b" : 2}

这样变量a同样可以赋值成功,a的值最终为2

 

对象的解构赋值也可以嵌套

var  { a:{ b } }  = { "a" : { "b":1 } }

b的值为1

也可以指定默认值

 

var { a,b = 2  }  = { "a" : 1}

b的值为2

 

字符串的解构赋值

 

var [a,b,c,d,e,f]  = "我就是前端君"

a = 我

b = 就

c = 是

d = 前

e = 端

f = 君被转成了类似数组的对象

在解构赋值的过程中,将字符串

 

解构赋值的作用

1.交换变量的值

传统做法最常用的是引入第三个变量来临时存放

例:

var x  = 1;

var y = 2; 

var z = x;

x = y;

y = z;

解构赋值

var x = 1

var y = 2

[  x , y ]  = [  y , x ] 

 

2.提取函数返回的多个值

函数只能返回一个值,我们可以将多个值装在一个数组或者对象中,再用解构赋值快速提取其中的值

function  demo ( ){

return { "name" : "张三" , "age" : 21 }

}

 

var { name , age } = demo()

 

3.定义函数参数

function demo ({a,b,c}){

console.log("姓名"+a)

console.log("身高"+b)

console.log("体重"+c)

}

demo({a:"张三",b:"1.72m",c:"50kg",d:"8000"})

 通过这种写法, 很方便就能提取JSON对象中想要的参数,例如案例中,我们只需要获取实参中的:a,b,c,而不需要关其他的参数,

 

4.函数参数的默认值

先判断该参数是否为undefined,如果是代表没传,需要手动给它赋一个值。

但是有了解构赋值,一切都变得简单很多。

 

字符串的用法

模板字符串

`大家好,我是${Person.name},我来自${Person.hometown},我今年${Person.age}岁了,我的爱好是${Person.hobby},我明年就${Person.age + 1}岁了,我已经是${Person.age > 18 ? '成年人' : '未成年'}了。`

变量写在${}里

 

repeat()函数

将目标字符串重复N次,返回一个新的字符串,不影响目标字符串。

includes()函数

判断字符串中是否含有指定的子字符串,返回true表示含有和false表示未含有。第二个参数选填,表示开始搜索的位置

var name = "前端"

name.includes("前",1)

第二个参数为1,表示从第2个字符“端“开始搜索,第一个字符”前“的位置是0。

 

startsWith()函数

判断指定的子字符串是否出现在目标字符串的开头位置,第二个参数选填,表示开始搜索的位置

var  name = "前端君"

name.startsWith("端",1)

第二个参数为1表示从第2个字符开始搜索。若要从第一个字符开始搜索,参数应该为0或者为空(默认从第一个字符开始搜索)。

 

endsWith()函数

判断子字符串是否出现在目标字符串的尾部位置,第二个参数选填,表示针对前N个字符。

 

stringRaw()函数

看函数名raw是未加工的的意思,正如这个函数的作用一样:返回字符串最原始的样貌,即使字符串中含有转义符,它都视而不见,直接输出。

 

数组的用法

Array.of()函数

将一组值,转换成数组。

Array.from()函数

可以将类似数组的对象或者可遍历的对象转换成真正的数组

find()函数

找出数组中符合条件的第一个元素

 

let arr = [1,2,3,4,5,6]

arr.find(function(value.index){

return value > 2;

})

看上面的代码,find()函数的参数是一个匿名函数,数组的每个元素都会进入匿名函数执行,直到结果为true,find函数就会返回value的值:3。倘若所有元素都不符合匿名函数的条件,find( )函数就会返回undefind。

 

findIndex()函数

返回符合条件的第一个数组成员的位置下标。

fill()函数

用指定的值,填充到数组。

let arr = [1,2,3]

arr.fill(4)

经过fill( )函数处理后的数组arr已经变成了[4,4,4];正如函数名fill(填充)一样。所有元素都被填充为数字4了。如果我想只填充部分元素可不可以呢?可以的,fill( )函数提供了一些参数,用于指定填充的起始位置和结束位置

let arr = [1,2,3]

arr.fill(4,1,3);

上面的代码中第2个参数和第3个参数的意思是:从位置1的元素开始填充数字4,截止到位置3之前,所以是位置1和位置2的元素被数字4填充了,得到的结果:[1,4,4]。

 

 

entries()函数

对数组的键值对进行遍历,返回一个遍历器,可以用for..of对其进行遍历。

 

keys()函数

函数作用:对数组的索引键进行遍历,返回一个遍历器。

 

values()函数

作用:对数组的元素进行遍历,返回一个遍历器。