一、变量
let:
1.块级作用域
例子:
2.没有预解析
例子:
3.同一作用域内不能重复定义
4.for循环中的let算是一个父级作用域不算重复定义、
const:
1.特性与let一样
2.定义常量,不能更改,定义出来必须有值,不能后赋值,不能更改
解构赋值:
1.格式:let[a,b,c] = [12,5,7]
2.json:
let {name,age, job} = {
name:'Strive',
age:18,
job:'码畜'
};
let {name,age,job} = json
let {name:n,age:g, job:a} = json; //起别名
3.解构时候可以给默认值:
let [a,b, c="默认值"] = ['aaa','bbb'];
二、字符串模板
字符串模板:
优点: 可以随意换行
` ${变量名字}`
字符串新增方法:
1.字符串查找:str.includes(要找的东西) 返回值 true/false
2.字符串是否以谁开头:str.startsWith(检测东西) 返回值 true/false
3.字符串是否以谁结尾:str.endsWith(检测东西) 返回值 true/false
三 、函数
1.函数默认参数
函数参数默认已经定义了,不能再使用let,const声明
2.扩展运算符、Rest运算符:
...
展开数组
... :
[1,2,3,4] -> ... [1,2,3,4] -> 1,2,3,4
...:
1,2,3,4,5 -> ...1,2,3,4,5 -> [1,2,3,4,5]
剩余参数: 必须放到最后
3.箭头函数
第一种形式
()=>return的值
第二种形式
() =>{
语句
return
}
注意:
1. this问题, 定义函数所在的对象,不在是运行时所在的对象
2. 箭头函数里面没有arguments, 用 ‘...’
3. 箭头函数不能当构造函数
四、数组循环方法
1.arr.forEach()
2.arr.map() // 非常有用,做数据交互 "映射"
正常情况下,需要配合return,返回是一个新的数组
若是没有return,相当于forEach
注意:平时只要用map,一定是要有return
3.arr.filter(): 过滤,过滤一些不合格“元素”, 如果回调函数返回true,就留下来
4.arr.some(): 类似查找, 数组里面某一个元素符合条件,返回true
5.arr.every(): 数组里面所有的元素都要符合条件,才返回true
其实他们可以接收两个参数:
arr.forEach/map...(循环回调函数, this指向谁);
------------------------------------------------------------
6.for...of
arr.keys() 数组下标
arr.entries() 数组某一项
五、数组新增的东西
Array.from:
作用:把类数组(获取一组元素、arguments...//具备length就差不多可以)对象转成数组
Array.of:
作用:把一组值转换成数组
arr.find():
作用:查找,找到第一个符合条件的数组成员,如果没找到,返回undefined
arr.findindex():
作用:找的是位置,没找到返回-1
arr.fill():
作用:填充数组 arr.fill(填充的东西,开始位置,结束位置)
arr.includes():
作用:判断数组包不包含指定的值