> 技术文档 > ES语法学习2_es得原生语法学习

ES语法学习2_es得原生语法学习


语法5:对象解构

对象是key:value存在,获取对象属性和方法的方式有两种

1、通过.

2、通过【】

例如:

var info = { title: \"大前端\", link: \"www.baidu.com\", go () { console.log(\"坐地铁上班\"); } }//通过.方式console.log(info.title);//通过[]方式console.log(info[\"title\"]);info[\"go\"]();var {title,go}=info;//还原代码var title=info.title;var go=info.goconsole.log(title);// console.log(link); //报错,link is not definedvar {title2,go}=info;console.log(title2); //undefined//可以使用冒号取小名var{title:titile}=info;console.log(titile);

es6对象解构-其实就是快读获取属性和方法的方式,前提:默认情况title必须是json

语法6:传播操作符

使用“...”进行传播

例如:

//1.定义一个对象 let person1 = { name: \"小飞飞\", age: 16, city: \"New York\" }; console.log(\"创建一个对象:\", person1); //2、对象解构 // let { name, age } = person1; // console.log(\"=======对象解构======\"); // console.log(name); // console.log(age); //============对象融合============== let person2 = { ...person1, //传播操作符,展开person1对象 // 将person1放在...中,即person2中 sex: \"Male\" } console.log(person2.age); console.log(person2.name); let { name, age, ...person3 } = person2; //将person2中的name,age进行解构,剩余的属性传输到person3中 console.log(person3); //person3只有city,sex属性 let user = { name: \"tom\", age: 25, city: \"beijing\" } / / let {name}=user //报错 let { name: Username } = user; //正确

实战:

function findUsers(){ $.get(\"xxxx\",function(res){ var res={ page:11, pageSize:10, pageNo:1, firstFlag:true, lastFlage:false, total:23, data:[{},{},{},{}] } }); //对象取值 var {data:users,...pagejson}=res; //等价于 /* var user = res.data; var pagejson={ page:11, pageSize:10, pageNo:1, firstFlag:true, lastFlage:false, total:23, } */ }

语法7:箭头函数

箭头函数是传统函数的简写

改写内容:

1、函数花括号前加=>

2、移除function

3、移除函数体的大括号

        只有当函数直接返回表达式时,才可以省略大括号。

4、移除return关键字

5、移除参数周围的括号

        只有当函数只有一个简单参数时,才能省略括号。

6、箭头函数总是未命名的。如果箭头函数需要调用自身,请使用具名函数表达式。也可以将箭头函数赋值给一个变量,这样它就有了名字。

案例1:

// 传统匿名函数(function (a) { return a + 100;});// 1. 移除“function”,并将箭头放置于参数和函数体起始大括号之间(a) => { return a + 100;};// 2. 移除代表函数体的大括号和“return”——返回值是隐含的(a) => a + 100;// 3. 移除参数周围的括号a => a + 100;

案例2:

// 传统匿名函数(function (a, b) { return a + b + 100;});// 箭头函数(a, b) => a + b + 100;const a = 4;const b = 2;// 传统无参匿名函数(function () { return a + b + 100;});// 无参箭头函数() => a + b + 100;

 案例3:

// 传统匿名函数(function (a, b) { const chuck = 42; return a + b + chuck;});// 箭头函数(a, b) => { const chuck = 42; return a + b + chuck;};

 案例4:

// 传统函数function bob(a) { return a + 100;}// 箭头函数const bob2 = (a) => a + 100

语法8:map和reduce方法使用

1、map函数讲解

array.map((item,index,arr)=>{

//item是操作的当前元素

//index是操作元素的下表

//arr是需要被操作的元素

//具体需要哪些参数 就传入那个

})

map()方法经常拿来遍历数组,但是不改变原数组,但是会返回一个新的数组

案例1:

let arr = [1, 2, 3, 4, 5, 6]; //传统方法 let newarr = []; for (let i = 0; i  { return item * 2; }); //简写 let newarr3 = arr.map(item => item * 2);

案例2:

var users = [{ name: \"zyy1\", age: 10 }, { name: \"zyy2\", age: 11 }]; users.map(item => { item.age = item.age + 1; item.address = \"深圳\" }); console.log(\"操作后的数据为:\", users)

 运行结果为:

2、reduce函数讲解 

array.reduce(callback, initialValue)

• callback:必需,回调函数,用于处理数组每个元素。它接受以下四个参数:
        accumulator:累积值,函数上一次执行的返回值。
        currentValue:当前数组元素的值。
        currentIndex:当前数组元素的索引(可选)。
        array:原数组(可选)。
• initialValue:可选。初始值。如果提供此值,第一次迭代时 accumulator 为 initialValue,否则为数组的第一个元素。
• 返回值
        返回最终计算得到的累积值。

案例1:数组求和

let arr = [3, 9, 4, 3, 6, 0, 9]; //求数组项之和 var sum = arr.reduce(function (prev, cur) { return prev + cur; }, 0); //通过箭头函数简写为 var sum = arr.reduce((prev, cur) => prev + cur, 0); //初始值。如果提供此值,第一次迭代时 prev 为 0,否则为数组的第一个元素。 var sum = arr.reduce((prev, cur) => prev + cur);

   // 由于传入了初始值0,所以开始时prev的值为0,
    // cur的值为数组第一项3
    // 相加之后返回值为3作为下一轮回调的prev值
    // 然后再继续与下一个数组项相加
    // 以此类推,直至完成所有数组项的和并返回。

案例2:求最大值

//求数组项最大值 var max = arr.reduce(function (prev, cur) { if (prev > cur) return prev; else return cur; },0); console.log(max); //优化 var max = arr.reduce(function (prev, cur) { return Math.max(prev, cur); }); console.log(max); //简写为 var max = arr.reduce((prev, cur) => Math.max(prev, cur)); console.log(max);