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 8item = 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")); //falseconsole.log(str.startsWith("wo sh")); //trueconsole.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)); //105let 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); //韩超勃 18let 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); //增加11set.delete(5); //删除5console.log(set.has(22)); //falseset.clear(); //清空for(let item of set){ //用for...of遍历setconsole.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>`;}
