ES6简单总结

本文主要介绍了ES6的块级作用域、常量定义、对象和函数的增强写法、箭头函数以及高阶函数的使用,如filter、map和reduce。通过实例详细解释了let、const的作用,以及如何利用它们解决变量提升和块级作用域问题。
摘要由CSDN通过智能技术生成

1.1块级作用域
​ ES6之前没有块级作用域,ES5的var没有块级作用域的概念,只有function有作用域的概念,ES6的let、const引入了块级作用域,并且它们没有像var那样的变量提升,在同一段代码中不能重复定义。

​ ES5之前if和for都没有作用域,所以很多时候需要使用function的作用域,比如闭包。

1.1.1 什么是变量作用域
​ 变量在什么范围内可用,类似Java的全局变量和局部变量的概念,全局变量,全局都可用,局部变量只在范围内可用。ES5之前的var是没有块级作用域的概念,使用var声明的变量就是全局的。

{
var name = ‘zzz’;
console.log(name);
}
console.log(name);
​ 上述代码中{}外的console.log(name)可以获取到name值并打印出来,用var声明赋值的变量是全局变量,没有块级作用域。

1.1.2 没有块级作用域造成的问题
if块级
var func;
if(true){
var name = ‘zzz’;
func = function (){
console.log(name);
}
func();
}
name = ‘ttt’;
func();
console.log(name);
​ 代码输出结果为’zzz’,‘ttt’,‘ttt’,第一次调用func(),此时name=‘zzz’,在if块外将name置成‘ttt’,此时生效了,if没有块级作用域。

for块级
​ 定义五个按钮,增加事件,点击哪个按钮打印“第哪个按钮被点击了”。

块级作用域 按钮1 按钮2 按钮3 按钮4 按钮5 ​ for块级中使用var声明变量i时,是全局变量,点击任意按钮结果都是“第五个按钮被点击了”。说明在执行btns[i].addEventListener('click',function())时,for块级循环已经走完,此时i=5,所有添加的事件的i都是5。

​ 改造上述代码,将for循环改造,由于函数有作用域,使用闭包能解决上述问题。

  // 使用闭包,函数有作用域
  for (var i = 0; i < btns.length; i++) {
    (function (i) {
      btns[i].addEventListener('click',function (
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值