目录
一、Let
let等价于var,也是用来声明变量的
let的特点:
1,变量必须先定义后使用
2,变量不能重复定义
3,块级作用域:在该块的范围内才能使用该变量,且该变量不会消失
4,暂时性死区:当内部变量与外部变量同名时,内部变量屏蔽外部变量
二、const
const修饰的变量为只读变量
1,变量只能读不能改
2,被conset修饰的变量必须被初始化
3,必须先定义后使用
4,不能重复定义
5,块级作用域
规定:只读变量名通常全部大写
面试题:
const arr=[1,2,3,4];
arr[0]=9;
console.log(arr[0]);//可以运行,因为数组有两个空间,这里改的是空间内的内容,并没有改栈里的地址,所以地址还是一样的
如果
let arr1=[2,3,4];
arr=arr1;
//错误,因为这里改变了引用id就相当于改变栈区,const是只读不写的。
三、this
this:函数的内置对象,只能在函数体内使用
1,与事件连用:代表触发事件的元素本身
2,与普通函数连用,代表该函数的对象
四、bind
功能:修改某个函数的this指向
参数:bind(被修改的this指向)
注意事项:bind是函数对象的一个成员函数
通常用来修饰匿名函数
var box = document.getElementById("box");
document.onclick = function(){
this.style.display = "none";
}.bind(box);
五、for……in,for……of
for...In...遍历下标
for...of..遍历元素内容
六、字符串扩展方法
str.includes(参数):返回布尔值,表示整串查找
str.startsWith(参数):返回布尔值,表示从开始找
str.endsWith(参数):返回布尔值,表示从后往前找(可用来查找后缀名)
七、生僻字
汉字解析方式:utf-16(16个二进制)
打印汉字对应的unicode码
console.log("\u{21c56}");
console.log(str.codePointAt(0).tostring(16));
八、箭头函数
箭头函数:匿名函数的另一种写法
普通函数:let fun=function(){
console.log("");
}
箭头函数:let fun1=()=>{
console.log("");
}
注意事项:
let fun=(a)=>{
return a+10;
}
若函数的参数只有一个,则可以直接省略参数的小括号
let fun=a=>{
return a+10;
}
若函数体的代码只有一行,则可以直接省略{}
let fun = a=>console.log(a+10);
如果函数体只有一行代码,则自带return
let fun=a=>a+10;
九、解构赋值
解构赋值:
1,解析解构进行赋值
a.数组
let [x,y,z]=[1,2,3]
b.对象
let {name,age}={name:老王,age:18};
去掉json对象的前缀
let json={"name":"老王","age":18};
let {name,age}=json;
console.log(name,age);
输出:老王,18
2.交换两个变量的值
方法1:中间变量交换
let [a,b]=[1,2];
let t;
t=a;
a=b;
b=t;
方法二:
let [a,b]=[1,2];
a=a+b;
b=a-b;
a=a-b;
方法三:
let [a,b]=[1,2]
[a,b]=[b,a];
十、Set集合
set集合:
没有下标,自动去重
let set =new Set(数组对象)
add(参数)向集合中添加一个元素
delete(值)删除集合中某个数
has(值)判断集合中是否含有某个值
clear()清空集合
集合的遍历需要用到for...of
数组去重
let set =new Set(arr);
将容器转换为数组
arr=Array.from(set);
双色球思想
十一、ES6字符串模板
oUl.innerHTML=``;
被反引号括起来的可以和HTML里的写法一样
如果模板字符串中有变量,该变量需要用${变量}