let
定义变量时的关键字,等价于var
注意事项
Let修饰的变量,使用必须在定义之后
不能重复定义变量
块级作用域
保证变量一定可以在自己的范围内使用
使用场景:for循环事件体内
暂时性死区
当外部变量与内部变量同名时,内部变量屏蔽外部变量
const用法
一个有名字的常量,修饰常量
修饰变量的关键字,与let相似,不能重复定义,必须先定义后使用区别于只读
必须在定义时赋值,必须初始化
被const修饰的变量叫只读变量,习惯上只读变量大写
块级作用域
JS中的const只能修饰栈区,不能直接修饰堆区
this/bind
this
函数体内的关键字,根据不同类型的函数,作用不同
与事件连用:代表触发事件的元素本身
与普通函数连用:代表调用该函数的对象本身(除了构造函数,其他的都是普通函数)
与构造方法连用:代表new出来的对象本身
bind
改变匿名函数的this指向
匿名函数.bind(要改变的this指向);
apply/call
改变有名函数的this指向
json对象和字符串的相互转换
字符串转对象
JSON.pase(str);
对象转字符串
JSON.stringfy
遍历
for...in... :遍历下标
for(let index in json)
for...of... :遍历内容
for(let item of arr)
字符串扩展方法
str.includes(参数)
返回布尔值,表示找到了参数字符串
str.startsWith():前缀查找
str.endsWith():后缀查找
中文读取的格式 生僻字
str.codePointAt(下标).toString(16)
箭头函数
匿名函数的另一种写法
如果匿名函数只有一个参数,可以直接省略形参的括号
如果匿名函数里只有一行代码,可以省略花括号
并且只有一行代码时,默认将这行代码的执行结果作为返回值
箭头函数是没有this的,可以直接将箭头函数理解为if语句
解构赋值
解析结构进行赋值,注意等号两边的格式要统一
数组
JSON对象
可以让一个函数返回多个返回值
解决多次打点的问题
两个数交换
[a,b]=[b,a]
set集合
没有下标,自动去重
let set =new Set(数组)
API
add()
delete()
has(参数):判断集合中是否含有某个值
Clear():清空
遍历
for(let item of set)
将容器转化为数组
arr=Array.from(set)
map
映射表。创造元素只通过key,且key值唯一
API
set()增改
有key为改,无key为增
get(key)
has(key)
delete(无参)
for(let item of map)遍历
返回值为数组
ESS6字符串模板
`<li>hello word</li>`
模板中出现变量要写在这其中 ${ }