1.let变量和const常量
1.1.let的特点:
1.存在暂时性死区
2.不允许变量提升
3.不允许存在同名变量
4.存在块级作用域
1.2.const修饰的变量不允许修改,变量一般写成全大写
2.箭头函数
2.1.函数的三种格式对比,包括箭头函数
function add(a, b) {return a + b;}
var sub = function(a, b) { return a - b;}
var mul = (a, b) => { return a * b;}
console.log(add(8, 4), sub(8, 4), mul(8, 4));//12 4 32
2.2.箭头函数的四种写法:
1.标准写法:
var 变量名=(形参1,形参2,..)=>{
函数体;
}
2.当形参只有一个时可以省略小括号()
var 变量名=形参=>{
函数体;
}
3.当函数体只有一行执行语句时,可以省略花括号{}
var 变量名=(形参1,形参2,..)=>函数体;
4.小括号花括号一起省略
var 变量名=形参=>函数体;
示例:
var fn1 = (a, b) => {
console.log(a, b);
};
var fn2 = a => {
console.log(a);
};
var fn3 = (a, b) => console.log(a, b);
var fn4 = a => console.log(a);
fn1(2, 3);fn2(4);fn3(5, 6);fn4(7);
2.3.箭头函数的this指向宿主函数
3.bind的用法
示例1:
var func1 = function() {console.log(this);}
func1(); //window
var obj2 = {name: "zs"}
var func2 = func1.bind(obj2);
func2(); //Object{name:zs}
示例2:
var A = {
name: "A",
sing() {console.log(this.name + "在唱歌");
};
var B = {name: "B"}
A.sing.bind(B)();//后面空()代表执行
4.Symbol数据类型、Set数据结构和Map数据结构
4.1.Symbol可以作为对象的属性名使用,保证不会与其他属性名产生冲突
Symbol 是js的数据类型(number string bool object null undefined Symbol),表示是独一无二的
格式:
let s=Symbol();
4.2.Set用于数组去重
var array = [1, 2, 3, 3, 2, 1, 1, 2, 3, 1];
var a1 = new Set(array);
console.log(a1); //Set(3) {1, 2, 3}
4.3.Map结构是“值—值”对应(相对于"键–值"对应来说)
var map = new Map([
["name","张三"],
["age",18]
]);
console.log(map.has("name"),map.get("name")); //true 张三
5.解构赋值
//1.数组的解构赋值:将数组或者对象中值,结构出来给不同的变量
var arr = ["beijing", "shanghai", "tianjin"];
let [city1, city2, city3] = arr;//格式
console.log(city2); //输出:shanghai
//2.对象的解构赋值:将对象的值,给属性同名的变量
var obj = {
name: 'zs',
age: 18,
say() {console.log("hello world");}
};
let {name,age,say}=obj;// 变量和属性名保持一致
console.log(name, age, say);
//3.数学对象的解构赋值
let {random,round}=Math;
console.log(random(), round(1.4)); //0.2821343 1