变量的区别
var 全局作用域和函数作用域 会变量提升
let 局部作用域 不会变量提升 不能重复声明
可以把let看成var,.只是它定义的变量被限定在了特定范围内才能使用,而离开这个范围则无效。
const 值类型不能修改 声明必须赋值 一般大写
ES6中,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
对象解构没有顺序
自动解析数组或对象中的值。比如若一个函数要返回多个值,常规的做法是返回一个对象,将每个值做为这个对象的属性返回。但在ES6中,利用解构这一特性,可以直接返回一个数组,然后数组中的值会自动被解析到对应接收该值的变量中
var [x.yl-getVal() //函数返回值的解构
function getVal0 {
return [ 1,2 ];
}
console.log('x:'+X+', y:'+y);//输出: x:1, y:2
[name,,age]-['wayou','male','secrect'];//数组解构长度为三中间键值为空console.log('name'+name+', age:'+age);//输出: name:wayou, age:secrect
展开
...arr arr展开为单独变量
字符串
字符串模板
`${js变量}`
可以换行,可以加特殊符号
遍历
for of
检测
includes(sub)是否包含
startWith(sub)以开头
endsWith(sub)以结尾
{
let str = "string";
console.log('includes',str.includes("c"));
console.log('start',str.startsWith('str'));
console.log('end',str.endWith('ng'));
}
去空白(好像是es5的)
trim()去掉两端空白
trimLeft()去掉左边空白
trimRight()去掉右边空白
var str=" 我爱我的祖国 ";
console.log(str.trim());
console.log(str.trimLeft());
console.log(str.trimRight());
重复
repeate(n)字符串重复n次
{
let str = "abc";
console.log(str.repeat(3));
}
填充
”22“.padStart(4,”0“) //开头
“0022”
.padend(长度,填充字符串)//结尾
{
console.log('1'.padStart(4,'0'));
console.log('1'.padEnd(2,'0'))
}
数组高阶方法
forEach 遍历
arr.forEach(function(item,index,self){})
//item 当前遍历的元素
//index 当前元素的下标
//self 当前数组
map 映射
arr.map(function(item,index,self){
//返回一个,映射数组
})
filter 过滤
arr.map(function(item,index,self){
//返回真,当前遍历元素保留
//返回假,当前变量的元素过滤掉
})
reduce 累计
arr.reduce(function(a,b){
//a是上一次返回的结果
})
some 有一个返回结果为true最终结果为true
every 每个返回结果为true最终结果为true
find 查找符合条件的元素
findIndex 查找符合条件的元素下标
箭头函数
01 箭头函数省略function
02 =>左边参数
03 箭头右边,函数体,返回值
04 传参0个或者两个以上 参数加上括号
05 如果函数体有多行需要加上{} 如果需要返回值return
06 如果返回的是一个对象则用()包裹对象({})
07 箭头函数this 指向上一层作用域的this
函数
默认参数 function fn(a=10,b=20){}
调用:扩展参 fn(...arr)
定义:不定参 function(...args){}
对象
1.对象简写
变量和值简写
函数function简写
var name=“mumu”
var obj={
name,
say(){alert(this.name)}
}
2.对象动态属性 {[nick+"msg"]:"你好呀"}
类
面向对象基本特点:封装;继承;多态;接口
extends继承
constructor构造函数
super 超类
static 静态
定义类 类方法
class Person{
constructor(name,age)
this.name=name;
this.age=age;
}
say(){
alert("你好")
}
}
实例化类 var pl=new Person()
类中的this Person类中的this指向,当前类的实例(pl)
继承
class Teach extends Person{
constructor{name,age,major){
super();
this.major=major;
}
}
模块 module
导入
import{name,fun,Square}from'./api.js'
import Square form'./api.js'
import S form'./api.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]
数组去重 arr=[...new Set(arr)]