ES6新语法概统解读

本文深入探讨了ES6中的新特性,包括let和const在块级作用域内的区别,var的全局声明,以及它们如何避免变量提升。解构用于从数组和对象中方便地提取值,而展开运算符则在数组连接、函数参数等方面发挥作用。箭头函数改变了this的指向规则,提供了更简洁的函数定义方式。此外,还介绍了map和reduce方法在数组操作中的应用。
摘要由CSDN通过智能技术生成

1、 let 、const 、var声明变量区别
let: 避免了变量提升 只在块级作用域内起作用
var 全部声明
contst 只在块级作用域内作用, 不存在变量提升,必须先定义后使用, 不可重复声明, 声明后必须赋值 注:不可以重新赋值,但是可以更改里面的属性值
2、for of 循环
格式:for (let item of Arr)
优点: ①相比for(let i=0;i<Arr.length;i++){}代码更简洁
②可以用break来终止整个循环,或者continute来跳出当前循环,继续后面的循环
③获取到数组的索引for(let indexof arr.keys())
④可以循环任何可迭代(也就是遵守可迭代协议)类型的数据
⑤for…of 循环将只循环访问对象中的值
缺点:不可以循环对象
3、模板拼接: 方式:${} 事例:<li>${test}</li>
4、解构
在ES6中,可以使用解构从数组和对象提取值并赋值给独特的变量
解构数组的值:
const point = [10, 25, -34];
const [x, y, z] = point;
console.log(x, y, z);
Prints: 10 25 -34
[]表示被解构的数组, x,y,z表示要将数组中的值存储在其中的变量, 在解构数组是, 还可以忽略值, 例如const[x,z]=point,忽略y坐标.
解构对象中的值:
const gemstone = {
type: ‘quartz’,
color: ‘rose’,
karat: 21.29
};
const {type, color, karat} = gemstone;
console.log(type, color, karat);
花括号 { } 表示被解构的对象,type、color 和 karat 表示要将对象中的属性存储到其中的变量
5、 展开运算符(用三个连续的点 (…) 表示)是 ES6 中的新概念,使你能够将字面量对象展开为多个元素
*
用途1:连接两个数组

        const fruits = ["apples", "bananas", "pears"];
    const vegetables = ["corn", "potatoes", "carrots"];
    const produce = [...fruits,...vegetables];
    const produce = fruits.concat(vegetables);  也可以是使用数组的方法 Array.concat()
* 

用途2:将变量赋数组值
*
用途3:可变参数函数

    function sum(...nums) {
        let total = 0;
        for(const num of nums) {
            total += num;
        }
        return total;
    }

6、箭头函数
*
存储在变量中,
*
当做参数传递给函数,
*
存储在对象的属性中。

        const sayHi = () => console.log('Hello Udacity Student!')

this指向:对于箭头函数,this的值基于函数周围的上下文, 换句话说,this的值和函数外面的this的值是一样的
函数内的 this 的值是全局对象,不是 dessert 对象
1、解决此问题的方式之一是使用闭包(closure):

// 构造函数
function IceCream() {
this.scoops = 0;
}
// 为 IceCream 添加 addScoop 方法
IceCream.prototype.addScoop = function() {
const cone = this; // 设置 thiscone变量
setTimeout(function() {
cone.scoops++; // 引用cone变量
console.log(‘scoop added!’);
console.log(dessert.scoops);//1
}, 0.5);
};
const dessert = new IceCream();
dessert.addScoop();
2、使用箭头函数
// 构造函数
function IceCream() {
this.scoops = 0;
}
// 为 IceCream 添加 addScoop 方法
IceCream.prototype.addScoop = function() {
setTimeout(() => { // 一个箭头函数被传递给setTimeout
this.scoops++;
console.log(‘scoop added!’);
console.log(dessert.scoops);//1
}, 0.5);
};
const dessert = new IceCream();
dessert.addScoop();

7、map
map() :接收一个函数,将原数组中的所有元素用这个函数处理后放入新数组返回。
举例:有一个字符串数组,我们希望转为int数组
let arr = [‘1’,‘20’,’-5’,‘3’];
console.log(arr)
let newArr = arr.map(s => parseInt(s));
console.log(newArr)
8、reduce
reduce() :接收一个函数(必须)和一个初始值(可选),该函数接收两个参数:

第一个参数是上一次 reduce处理的结果
第二个参数是数组中要处理的下一个元素
reduce() 会从左到右依次把数组中的元素用reduce处理,并把处理的结果作为下次reduce的第一个参数。如果是
第一次,会把前两个元素作为计算参数,或者把用户指定的初始值作为起始参数
举例:

const arr = [1,20,-5,3]
1
没有初始值:

指定初始值:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值