let
let声明变量有以下几个特点:
- 没有预解析过程(即没有变量提升,var有变量提升);
- 必须定义才能使用;
- 不可以重复声明;
- {}代表块级作用域,let有块级作用域,var有函数作用域。
const
特点:
- 修饰的变量称为只读变量,只能读不能写。(其值不可更改)
- 必须进行变量的初始化
- 必须先定义后使用
- 不能重复定义
- 块级作用域
- 暂时性死区
- 修饰引用类型时可以更改其值(引用类型有两块空间)
例如
const arr=[1,2,3,4];
arr[0]=666;
this
是函数体内的内置对象,只能在函数体的范围内使用
this和事件体连用,代表触发该事件的元素
例如
document.onclick = function() {
console.log(this);
}
this和普通方法(除了构造方法和事件体)连用时代表调用该方法的对象
例如
1、let stu = {
"name": "老王",
"age": 8,
"showValue": function() {
console.log(this.name, this.age);
}
}
stu.showValue();
2、function fun() {
console.log(this);
}
window.fun();
打印的是window
bind
作用:改变函数的this指向
bind是函数对象的方法,通常操作匿名函数
参数:bind(被改变的this指向)
写法:
1、 var fun = function() { console.log(this.offsetHeight)
}
fun.bind(xd)()
2、 var xd = document.querySelector("div");
document.onclick = function() {
this.style.display = "none";}.bind(xd)
for of
遍历内容,可遍历数组等(json不能用)
写法:
let arr = [6, 5, 7, 4, 8, 9];
for (let item of arr) {
console.log(item);
}
for in
遍历下标,可遍历json
for(let index in json){
console.log(index)}
字符串扩展方法
includes
功能:查找该字符是存在
参数:str.includes("dsa");
返回值:布尔值
startsWith
功能:查找字符串是否在开头出现
参数:str.startsWith("")
返回值:布尔值
endsWith
功能:查找字符串是否在末位出现
参数:str.endsWith("")
返回值:布尔值
返回字符本身:"\u{}"
返回字符对应的utf码值:str.codePointAt(0).toString(16)
箭头函数
- 如果函数参数只有一个,可以省略小括号
- 如果函数体只有一行代码,可以省略花括号
- 如果函数体内只有一行代码,则自带return
例题
let f = a => a + 1;
console.log(f(123))
解构赋值
等号左右两边必须类型一致
概念:解析结构进行赋值
数组:
let [x,y,z]=[1,2,3]
json:
let {name,age}={"name":"laowang","age":18}
可以用来去掉json对象的前缀,不用再打点调用
let{name,age}=json
交换变量方法
let a=123;
let b=456;
[a,b]=[b,a]
set集合
没有下标,不能存储重复元素
let set=new Set([1,2,5,1,16,3,546,4,1])
add
功能:增加
参数:set.add(8);
delete
功能:删除
参数:set.delete(8)
has
功能:判断集合中是否含有某个值
参数set.has(8);
返回值:布尔值
clear
功能:清空集合
参数:set.clear()无参
size属性
功能:返回集合长度
用法:set.size
应用
数组去重
let arr=[1,2,2,2,25,5,];
let set=new Set(arr);
arr=Array.from(set);//set集合转数组
console.log(arr)
字符串模板(` `)
支持回车换行,可以和html元素格式一致
有变量,可以用${变量名}转义
例题
let xul=document.querySelector("ul");
xul.innerHTML=`<li class='test'>${j}</li>
<li>2</li>`