ES6 基础篇

ES6基础

let

ES6中用来定义一个块级作用域变量,该变量的作用域只能作用于当前定义的块级范围。let定义的变量自带有一个检索,如果发现同一个作用域出现了两个同名变量的定义,此时会直接报错。从而保证变量定义的安全性。

let age = 21;

const

用来定义一个常量,即在程序运行过程中不允许被修改的量

const PI = 3.14;

解构赋值

  • 赋值运算符左右两个结构完全一致,此时ES6会根据结构,将右侧对应结构的数据赋值给左侧对应结构的变量

    let a = 20;
    let b = 30;
    [a, b] = [b, a];
    console.log(a, b);
    
    [[a], b] = [[1, 2, 3], [1, 2, 3]];
    console.log(a, b);
    
  • 对象的解构赋值, 在ES6中定义对象时,如果对象的键值对中的键和值对应的变量同名,此时可以直接属性变量

    let age = 20;
    let obj = { 'name': '张三', age, "sex": '男' };
    console.log(obj);
    
    let { name } = { "name": '张三', "age": 30 };
    console.log(name);
    
    let { "name": name1, sex } = { 'name': '张三', 'age': 20 };
    console.log(name1);
    console.log(sex);
    
  • 数组的析构, 数组的扩展运算

    let num = [10, 'aaa', 'bbb'];
    // 定义一个新数组,新数组会将原来数组中的数据合并,同时加入新的内容
    let num1 = [...num, "张三", '李四', '王五'];
    console.log(num1);
    
  • 对象结构的扩展

    let obj = { name: '张三', age: 20 };
    // 修改对象obj中的某一个字段
    obj = { ...obj, age: 30, sex: '男' };
    console.log(obj);
    

箭头函数

  • ES6箭头函数的定义语法:

    (参数列表)=>{函数体}

  • 箭头函数中的this

    箭头函数用来帮助开发人员快速定义函数,同时箭头函数中this的向取决于箭头函数定义时所处的上下文环境(即箭头函数在哪里定义,this就指代定义是对应的this),跟最终函数被谁调用没有任何关系,即箭头函数定义时this指代谁,之后不管函数被如何处理this永远固定

  •   say () {
        let count = 0;
        let timer = setInterval(() => {
          console.log(`你好我叫${this.name}`);
          count++;
          if (count >= 10) {
            clearInterval(timer);
          }
        }, 1000);
      }
    

对象方法(对象功能)

  • ES6输出特定格式的字符串可以使用,在中可以通过${variable}将外部变量嵌入到字符串指定位置

  •   introduce () {
        console.log(`
        我叫${this.name}, 
        我今年${this.age}岁, 
        性别${this.sex}`);
      }
    

ES6中类的概念

  • class Student {
      // 构造函数用来定义当前类Student初始化实例时对应的初始化原则
      constructor(name, age, sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
      }
      
      //定义一个功能完成学生问题的回答
      say () {
        let count = 0;
        let timer = setInterval(() => {
          console.log(`你好我叫${this.name}`);
          count++;
          if (count >= 10) {
            clearInterval(timer);
          }
        }, 1000);
      }
    }
    
    // 创建对象
    // let stu = new Student("张三", 20, "男");
    const stu = new Student();
    stu.name = "张三";
    stu.age = 20;
    stu.sex = "男"
    
    stu.say();
    

ES6模块化开发

  • const fun = function (min, max) {
      return min < max ? Math.floor(Math.random() * (max - min + 1) + min) : 0;
    }
    
  • 模块化导出一

    export { fun };
    

    注:该种模块导出方式可以在当前模块文件中任何位置随意导出模块,灵活,同时外部使用时可以根据实际情况有选择的进行模块导出。

  • 模块化导出二

    const fun = function (min, max) {
      return min < max ? Math.floor(Math.random() * (max - min + 1) + min) : 0;
    }
    const randomColor = function () {
      return `rgb(${fun(0, 255)}, ${fun(0, 255)}, ${fun(0, 255)})`;
    }
    
    export default { fun, randomColor };
    

    注:该种模块导出的方式只能使用一次,因此该模块导出方式只能在模块文件的最后写,而且一次性将所有模块全部导出

    优点:阅读性很强,很容易帮助开发人员看清导出的模块内容,并且是直接将对象数据导出给外界,此时外界接收的是一个对象,不再进行解构赋值

    缺点:一次性将所有模块导出,会造成模块的浪费,影响程序加载性能

  • 模块化的导入

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
    </head>
    
    <body>
    
    </body>
    <!-- babel是一个预编译器,作用是将ES6语法预编译成浏览器能够兼容的ES5语法 -->
    <script type="text/babel" src="./es6_05.js"></script>
    <script type="module">
      //模块的导入
      import obj from "./es6_05.js";
      console.log(obj.randomColor());
    </script>
    
    </html>
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值