ES6常见知识点总结

目录前言1.1块级作用域1.1.1 什么是变量作用域1.1.2 没有块级作用域造成的问题1.2 const的使用1.3 ES6的增强写法1.3.1 ES6的对象属性增强型写法1.3.2 ES6对象的函数增强型写法1.4 箭头函数1.4.1 认识箭头函数1.4.2 箭头函数的参数和返回值1.4.3 箭头函数的this使用1.5高阶函数1.5.1 filter过滤函数1.5.2 map高阶函数1.5.3 reduce高阶函数1.5.4综合使用
摘要由CSDN通过智能技术生成

目录

前言

一、块级作用域

1.1 什么是变量作用域

1.2没有块级作用域造成的问题

二、const的使用

三、ES6的增强写法

3.1 ES6的对象属性增强型写法

3.2 ES6对象的函数增强型写法

四、箭头函数

4.1 认识箭头函数

4.2 箭头函数的参数和返回值

4.3 箭头函数的this使用

五、高阶函数

5.1 filter过滤函数

5.2 map高阶函数

5.3 reduce高阶函数

5.4综合使用

六、前端模块化

6.1 为什么要有模块化

6.2 使用导出全局变量模块解决全局变量同名问题

6.3 CommonJS的模块化实现

6.4ES6的模块化实现

6.4.1 直接导出

6.4.2 统一导出

6.4.3 导出函数/类

6.4.4 默认导入 export default

6.4.5 统一全部导入


前言

同样是总结了自用的笔记,都是一些ES6常见的知识点,看到了会陆续补充,用的较少的这样没有总结。

一、块级作用域

ES6之前没有块级作用域,ES5的var没有块级作用域的概念,只有function有作用域的概念,ES6的let、const引入了块级作用域。

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

1.1 什么是变量作用域

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

{
    var name = 'zzz';
    console.log(name);
}
console.log(name);

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

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块级

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

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>块级作用域</title>
</head>
<body>
  <button>按钮1</button>
  <button>按钮2</button>
  <button>按钮3</button>
  <button>按钮4</button>
  <button>按钮5</button>
  <script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js">    </script>
    <script>
      // 3.没有块级作用域引起的问题:for块级
      var btns = document.getElementsByTagName("button");
      for (var i = 0; i < btns.length; i++) {
        btns[i].addEventListener('click',function (param) {
        console.log("第"+i+"个按钮被点击了");
        });
      }
    </script>
</body>
</html>

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 (param) {
            console.log("第"+i+"个按钮被点击了");
          })
        })(i);
      }

结果如图所示,借用函数的作用域解决块级作用域的问题,因为有块级作用域,每次添加的i都是当前i。

在ES6中使用let/const解决块级作用域问题,let和const有块级作用域,const定义常量,在for块级中使用let解决块级作用域问题。

 // ES6使用let/const
      const btns = document.getElementsByTagName("button");
      for (let i = 0; i < btns.length; i++) {
        btns[i].addEventListener('click',function (param) {
          console.log("第"+i+"个按钮被点击了");
        })
      }

结果和使用闭包解决一致。

二、const的使用

1.const用来定义常量,赋值知乎不能再赋值,再次赋值会报错。

<script>
        //1.定义常量,赋值后不能再赋值,在赋值报错
        const count = 1
        // count = 2
    </script>

2.const不能只声明不赋值,会报错。

  <script>
  //2.只声明不赋值,必须赋值
  // const count;    
  </script>

3.const常量含义是你不能改变其指向的对象,例如user,但是你可以改变user属性。

   <script>
        //3.常量的含义是你不能改变其指向的对象user,但是你可以改变user属性
        const user = {
            name:"zzz",
            age:24,
            height:175
        }
        console.log(user)
        user.
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值