1. 变量声明关键字
(1)var
全局作用域和函数作用域;
会变量提升;
(2) let
局部作用域;
不会变量提升;
不能重复声明;
(3)const
值类型不能修改;
声明必须赋值;
一般大写;
2.解构
(1) 数组
定义:把数组或对象解析为单独变量
1.基本格式var [a,b,,c='default',...rest]=arr
2.逗号代表下一位
3. ...rest剩余的所有(只能放在最后)
4.可以有默认值
5.交换变量[a,b]=[b,a]
(2)对象
var {name,age,say="love",...rest}=obj
对象解构没有顺序展开...arrarr展开为单独变量
(3)字符串
字符串模板`${js变量}`可以换行,可以加特殊符号
遍历for of
检测 includes(sub)是否包含
startsWith(sub)以开头
endWith(sub)以结尾
去空白 trim()去掉两端的空白
trimLeft()去掉左边的空白
trimRight()去掉右边的空白
重复 repeat(n)字符串重复n次
填充 “22”.padStart(4,"0")
"0022"
.padEnd(次数,填充字符串)
(4)数组高阶方法
forEach 遍历
arr.forEach(function(item,index,self){})
item 当前遍历的元素
index 当前元素的下标
self 当前数组
map 映射
arr.map(function(item,index,self){
})
filter 过滤
arr.filter(function(item,index,self){
})
reduce 累计
arr.reduce(function(a,b){
a是上一次返回的结果
})
some 有一个
有一个返回结果为true最终结果为true
every 每一个
每个返回结果为true最终结果为true
find 查找元素
查找符合条件的元素
findIndex 查找下标
查找符合条件的元素和下标
sort((a,b)=>a-b)
(5)箭头函数
01箭头函数省略function
02=>左边参数
03箭头右边 函数体、返回值
04传参0个或者2个以上 参数加上括号
05如果函数体有多行 需要加上{}
06如果返回的是一个对象则用()包裹对象({})
07箭头函数this指向上一层作用域的this
(6)函数
默认参数
function fn(a=10,b=20){}
调用:扩展参
fn(...arr)
定义:不定参
function(...args){
}
(7)对象
1.对象简写
变量和值简写
函数function简写
var name="lisa"
var obj={
name,say(){alert(this.name)}
}
2.对象动态属性
{[nick+"msg"]:"你好"}
(8)类
面向对象基本特点:封装; 继承; 多态; 接口
单词:extends 继承
constructor 构造函数
super 超类
static 静态
定义类
类方法
class Person {
constructor(name,age){
this.name=name;
this.age=age;
}
say(){
alert('你好')
}
}
实例化类
var p1 =new Person()
类中的this
Person类中的this指向 当前类的实例 (p1)
继承
class Teach extends Person{
constructor(name,age,major){
super();
this.major=major;
}
}
(9) 模块
module
导入
import{name,fun,Square}from'./api.js'
import Square from './api.js'
import Sq from './api.js'
别名as 8代表所有
Import *api from './api,js'
api.name; api.fun()
别名
import Square,{name,fun as fn} from './api,js'
导出 export{name,fun,Square}
导入多次
export default Square
默认只能导出一次
(10) Set
定义:没有重复元素的集合(数组)
初始化:var s1=new Set()
var s2=new Set([1,2,5])
添加:s1.add()
删除:s1.delete()
清除:s1.clear()
检测:s1.has()
长度:s1.size
转数组:Array.from(s1)[...s1]
数组去重: arr1=[...new Set(arr)]