变量声明关键字
var
全局作用域和函数作用域
会变量提升
let
局部作用域
不会变量提升
不能重复声明
const
值类型不能修改
声明必须赋值
一般大写
结构
数组
定义:把数组或对象解析为单独变量
1,基本格式
var [a,b,,c="default",...rest] = arr
2,逗号代表下一位
3,...rest
剩余的所有(只能放最近)
4, 可以有默认值
5,交换变量
[a,b] = [b,a]
对象
var {name,age,say="love",...rest}=obj
对象解析没有顺序
展开
...arr
arr展开为单独变量
字符串
字符串模板
`${js变量}`
可以换行,可以加特殊符号
遍历
for of
检测
includes(sub)是否包含
starsWith(sub)以开头
endsWidth(sub)以结尾
去空白
trim()去掉两端空白
trimLeft()去掉左边空白
trimRight()去掉右边的空白
重复
repeate(n)字符串重复n次
填充
“22”.padStart(4,"0")
"0022"
.padEnd(次数,填充字符串)
数组高阶方法
forEach
遍历
arr.forEach(function(item,index,self){})
item
当前遍历的元素
index
当前元素的下标
self
当前数组
map
映射
arr.forEach(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)=>
箭头函数
// 01 箭头函数省略function
// 02 =>function左边参数
// 03 箭头右边 函数题,返回值
// 04 传参0个或者2个以上 参数加上括号
// 05 如果函数体有多行需要加上{} 如果需要返回值 return
// 06 如果返回的是一个对象则用()包裹对象({})
函数
默认参数
function fn(a=10,b=20){
}
调用:扩展参
fn(...arr)
定义:不定参
function(...arge){
}
对象
对象简写
变量和值简写
函数function简写
var name = "mumu"
var obj = {
name,
sya(){alert(this.name)}
}
对象动态属性
{[nick+"msg"]:"你好"
类
面向对象基本特点:封装继承。多态,接口
单词:
extends 继承
constructor 构造函数
super 超类
static 静态
定义类
类方法
class Person{
constryctor(name,age){
this.name=name;
this.age=age;
}
}
实例化类
var pl = new Person()
类中的this
Person类中的this指向,当前类的实例(p1)
继承
class Teach extends Person{
constructor(name,age,major){
super();
this.major =major;
}
}
模块
导入
inport{name,fun,Square}from './ap.js'
imprt Square from './ap.js'
import Sq from './api.js'
别名as *代表所有
import * api from './ap.js'
api.name;api fun()
别名 import Square{name,fun as fn}from './ap.js'
导出
export{name,fun,Square}
导入多次
export default Square;
默认只能导出一次
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)]