变量赋值的简写形式
取出对象的值赋给变量 //1.ES5写法 // let obj = { // name : '张三', // age:20, // sex:'男' // }; // let name = obj.name; // let age = obj.age; // let sex = obj.sex; // console.log(name,age,sex);//张三 20 男 //2 ES6解构赋值 let obj = { name : '张三', age:20, sex:'男' }; // let age = obj.age; // let name = obj.name; // let gender = obj.sex; // 以上为原理 let {age,sex:gender,name} = obj;//相当于在全局变量中声明里age,gender,name console.log(name,age,gender);//张三 20 男 console.log(sex);//报错 sex is not defined sex变量未声明 取出变量的值 赋值给 对象 //ES5 写法 let obj = { name:name, age:age, sex:sex }; console.log(obj);//{ name: '李四', age: 22, sex: '女' } //ES6 写法 let obj1 = { name,//等价于 name:name age, sex, sayHi:function(){ console.log(111) }, eat(){// 等价于 eat:function(){} console.log(2222); } }; console.log(obj1); /* 运行结果:{ name: '李四', age: 22, sex: '女', sayHi: [Function: sayHi], eat: [Function: eat] } */ 解构赋值语法默认值 let obj = { name:'王五', sex:'男', age:0 }; // let name = obj.name; // let sex = obj.sex; /* (1)声明变量 let age; (2)检查obj有没有属性要age,有则赋值。 没有则赋默认值 if( obj.age != undefined ){ age = obj.age }else{ age = 18 } */ let {name,sex,age = 18} = obj; console.log(name,sex,age);//王五 男 0函数传参的本质:实参给形参赋值
ES5接收参数: let obj = {name:'张三',age:20} ES6接收参数: let {name,age,sex="男"} = {name:'张三',age:20}
// ES5 function fn(obj){//let obj={name:'张三',age:18} console.log(obj);//{ name: '张三', age: '18' } // 取出 let name = obj.name; let age = obj.age; console.log(name,age); } fn({name:'张三',age:'18'});//张三 18 // ES6 function fn({name,age,sex="男"}){//let {name,age} = {name:'张三',age:18} console.log(name,age); } fn({name:'张三',age:'18'});//张三 18 函数默认参数 //2.函数默认参数 function fn1(a = 10 ,b = 20){ //ES5 : 逻辑或短路 // a = a || 10; // b = b || 20; console.log(a,b); }; fn1(100,200);//100 200 fn1();//10 20 fn1(5);//5 10当btn2的点击事件外层是常规函数,看的就是常规函数的指向,所以是obj。 当btn2的点击事件外层是箭头函数,看起外层箭头函数的指向,外层箭头函数没有外层函数所以指向window。
作用:遍历对象一种简写形式(类似for-in循环)
let car = { pinpai: '劳斯莱斯幻影', price: 1000000000, }; let house = { address: '深圳湾一号', }; let person = { name: '陆离', age: 30, ...car, ...house, }; console.log(person);集合:与数组几乎一致,唯一的区别是不支持重复元素(相当于是无法储存重复元素的数组)
set 一般不会单独使用,只是为了去掉数组重复的元素。将set转成数组 // 声明Set:new Set(数组) let set = new Set([10, 20, 30, 66, 30, 100, 50, 90, 100]); console.log(set); //{ 10, 20, 30, 66, 100, 50, 90 } // set 一般不会单独使用,只是为了去掉数组重复的元素。将set转成数组 let arr = [...set]; console.log(arr);//[10, 20, 30, 66,100, 50, 90] 数组去重 let arr1 = [88, 20, 66, 20, 30, 88, 100, 50]; // 最简单的一行代码实现数组去重 let newArr = [...new Set(arr1)]; console.log(newArr);//[ 88, 20, 66, 30, 100, 50 ]