es6语法
Let :等价var,功能为对变量的声明定义
let 的特点:
(1)let 不能定义重复的变量;
(2)let 修饰的变量必须先定义后使用;
(3)块级作用域;
(4)暂时性死区::不同块级作用域可以重复定义;
const :修饰的变量只能读不能修改,习惯上名字都大写,在定义时就必须初始化
this:函数的内置对象
(1)与事件连用时,代表触发事件的元素本身
(2)与普通函数(除了事件和构造方法)连用,代表调用该函数的对象本身
let json = {
"name":"安心如",
"age":18,
"fun":function(){
console.log(this.name,this.age); //安心如 18
} //this代表json
}
json.fun();
bind:改变匿名函数的this指向
用法:匿名函数 . bind(被修改的this)
document.onclick = function(){
this.style.display = "none";
}.bind(oBox); //this从document被修改为oBox
json对象和字符串的相互转换
1、json对象➡字符串:JSON.stringify(json名字);
let json = {"name":"卫一豪","age":18};
let str = JSON.stringify(json);
console.log(str); //{"name":"卫一豪","age":18} 字符串型
2、字符串➡json对象:JSON.parse(str名字);
let str1 = '{"name":"韩超红","age":18}';
let obj = JSON.parse(str1);
console.log(obj.name,obj.age); //韩超红 18
for…in 和 for…of
for…in 遍历下标(常用来遍历json对象)
for(let index in json){
console.log(json[index]);
}
for…of 遍历元素内容
var arr = [5,4,6,7,8];
for(let item of arr){
console.log(item); //5 4 6 7 8
item = 1; //item并不是当前元素本身,只是拥有当前元素数值的一个变量
console.log(item); //1 1 1 1 1
}
console.log(arr); //[5,4,6,7,8]
ES6字符串扩展方法:判断字符串是否包含在另一个字符串中
(1)str.includes(参数):是否在字符串中找到了参数字符串,返回布尔值;
(2)str.startsWith(参数):参数是否在字符串的开始位置,返回布尔值;
(3)str.endsWith(参数): 参数是否在字符串的尾部位置,返回布尔值,最适合找后缀名
let str = "wo shi han chao bo.js";
console.log(str.includes("wo1")); //false
console.log(str.startsWith("wo sh")); //true
console.log(str.endsWith(".js")); //true
(4)读取生僻字和十六进制码
let str = "𡱖";
console.log(str.charAt(0)); //这种方法读不出来
console.log("\u{21c56}"); //超出UTF-16的汉字,百度十六进制码,
,需要用这种方法读
console.log(str.codePointAt(0).toString(16)); //str.codePointAt(0)
得到𡱖的十进制码; .toString(16) 十进制码转成十六进制码
箭头函数:匿名函数的另一种写法
let fun = function(a,b){
console.log(a+b);
}
let fun = (a,b)=>{ //箭头函数的写法,与上面写法等价
console.log(a+b);
}
a、箭头函数如果只有一个参数可以省略参数的( )
let fun = a=>{
console.log(a);
}
箭头函数函数体若只有一句,可以省略{ }
let fun = a=>console.log(a);
如果函数体只有一行代码还会自动return这行代码
//之前写法:
let fun = function(a){
return a += 5;
}
console.log(fun(100)); //105
//箭头函数写法:
let fun = a=> a += 5;
console.log(fun(100)); //105
let count = 0;
setInterval(()=>console.log(++count),1000); //每秒count加1
解构赋值:
a、解析结构进行赋值:等号左值和右值必须类型一致;
//写法1:
let x,y,z;
x = 1;
y = 2;
z = 3;
//写法2:
let x=1,y=2,z=3;
//解构赋值写法:
let [x,y,z] = [1,2,3];
//json对象的解构赋值写法:
let {name,age} = {name:"韩超勃",age:18};
console.log(name,age); //韩超勃 18
let obj = {"name":"小王","age":666};
let {name,age} = obj;
console.log(name,age); //小王 666
两个变量的交换
//做法1:
let [a,b] = [123,456];
a = a + b;
b = a - b;
a = a - b;
console.log(a,b); //456 123
//解构赋值做法:
let [a,b] = [123,456];
[a,b] = [b,a];
console.log(a,b); //456 123
set 集合:不能存储相同的元素,没有下标,去重
定义:let set = new Set(数组);
let set = new Set([1,2,3,4,1,2,3,4,5]);
console.log(set); //Set(5) {1, 2, 3, 4, 5}
将集合转成数组类型:
Array.from(set);
数组去重:
let arr = [1,2,3,4,1,2,3,4,5];
let set = new Set(arr);
arr = Array.from(set); //将集合转成数组类型
console.log(arr); [1,2,3,4,5]
add(参数): 向集合中添加一个元素;
delete(值) :删除集合中某个数;
has(值) :判断集合中是否含有某个值,返回布尔值;
clear() :清空集合;
et set = new Set([1,2,3,4,1,2,3,4,5]);
set.add(11); //增加11
set.delete(5); //删除5
console.log(set.has(22)); //false
set.clear(); //清空
for(let item of set){ //用for...of遍历set
console.log(item);
}
map
map:容器,映射表.所有操作都通过key
let map = new Map();
map.set("A","liuyisi");
map.set("B",{"name":"鲍威尔"});
map.set("C","霍利菲尔康");
map.set("A","刘康");
console.log(map);
console.log(map.get("B").name);
map.delete("B");
map.clear();
for(let item of map){
console.log(item[0],item[1]);
}
console.log(map.has("asdasd"));
ES6字符串模板
//如果字符串模板出现了变量用${变量}
let oUl = document.querySelector("ul");
let i = 6;
//oUl.innerHTML = "<li>"+i+"</li>";
//如果字符串模板出现了变量用${变量}
oUl.innerHTML = `<li>${i}</li>`;
for(let i=0; i<10; i++){
oUl.innerHTML += `<li class='price'>${i}</li>
<p class='t'>
<span>${i+1}</span>
</p>`;
}