1.块级作用域变量let
与const
2.使用反引号(``)不怕字符串中出现的引号;不怕换行,反引号包起来的字符串可以随便换行;使用${}
将变量或表达式包起来直接放在字符串中,不用写很多+
3.遍历字符串 使用for...of
代替for
循环
4.includes()
,startsWidth()
,endsWidth()
不用使用indexOf()
判断字符串中是否包含某个值了,使用includes()
var string = 'string'
string.includes('i', 0) // true
includes
第二个参数表示查找的起始索引。
还可以使用startsWidth()
和endsWidth()
判断字符串是否以某些字符开始或结尾。
5.扩展运算符...获取其余参数
以使用...
加上变量名保存其他参数全部数量。
当只知道函数的前几个具体参数,不确定之后会有多少个参数传入时,可以使用...
把其他传入的参数保存到一个数组中
function print(value1, value2, ...values){
console.log(values.join('--'))
}
print(1, 2, '参数3') // 参数3
print(1, 2, '参数3', '参数4', '参数5') // print(1, 2, '参数3', '参数4', '参数5')
6.箭头函数
代码更加简洁-》静态绑定this
箭头函数中,this
指向的是定义箭头函数的对象中的this
。
与普通函数的区别:
1.箭头函数是匿名函数,不能作为构造函数,不能使用New,箭头函数没有prototype
(原型)
2.箭头函数不绑定arguments,取而代之的是reset参数...解决
3.箭头函数不绑定this,会捕获其上下文的this,作为自己的this
4.箭头函数在用apply()或者call()调用一个函数时,只传入了一个参数,对this没影响,任何方法都改变不了其指向,如 call() , bind() , apply()
5.箭头函数不能当做Generator函数,不能使用yield关键字
7.数组
1. 使用Array.from()
把类数组对象转为数组
一般来说,含有length
属性的对象就可以当作类数组对象。平时获取多个DOM对象后,不能使用数组中的很多方法。我们可以使用Array.from
方便的转换为数组
var divs = Array.from(document.querySelectorAll('div'))
divs.forEach((value, index) => {})
2. 和字符串的includes
方法一样,看数组中是否有给定值
8.对象
1. 使用Object.assign()
合并多个对象
2. Object.keys()
: 属性名组成的数组-》Object.values()
: 属性值组成的数组-》Object.entries
: ["key", "value"]
组成的数组。
var john = {
name: 'John',
age: 12
}
Object.keys(john) // ["name", "age"]
Object.values(john) // ["John", 12]
Object.entries(john) // [["name", "John"], ["age", 12]]
9...运算符
1. 读取的时候就是把数组或者对象给扩展开来
var a = [...[1,2,3], 4] // 把数组的每一项都展出来
a // [1, 2, 3, 4]
var obj = {
name: 'John',
age: 12
}
var newObj = {...obj, job: 'teacher'} // 把某个属性展出来
newObj // {name: "John", age: 12, job: "teacher"}
2. 用作赋值的时候,是用作解构赋值,含义就是把等号右边表达式的剩余属性或数组项都放到...
后面的变量里。
var a, b
[a, ...b] = [1, 3, 5]
a // 1
b // [3, 5]
var c, d
{ name, ...d} = {name: 'John', age: 12, job: 'teacher'}
name // "John" 是一个属性的值
d //{ c, ...restD } = {name: 'John', age: 12, job: 'teacher'} 是一个对象