ES6知识点

简介: ES6知识点

ES6是JavaScript的第六个版本,也称作ECMAScript2015。它引入了许多新的语言特性,以使JavaScript语言更加现代化和强大化。下面是ES6中一些重要的新特性:

1. 块级作用域和let/const关键字

let 关键字用来声明变量,使用 let 声明的变量有几个特点:

  1. 不允许重复声明;
  2. 块儿级作用域(局部变量);
  3. 不存在变量提升;

不影响作用域链

const 关键字用来声明常量const 声明有以下特点:

  1. 声明必须赋初始值;
  2. 标识符一般为大写(习惯);
  3. 不允许重复声明;
  4. 值不允许修改;
  5. 块儿级作用域(局部变量);

2. 箭头函数(Arrow Functions)

箭头函数的注意点:

  1. 如果形参只有一个,则小括号可以省略;
  2. 函数体如果只有一条语句,则花括号可以省略,函数的返回值为该条语句的执行结果;
  3. 箭头函数 this 指向声明时所在作用域下 this 的值;
  4. 箭头函数不能作为构造函数实例化;
  5. 不能使用 arguments

特性:

  1. 箭头函数的this是静态的,始终指向函数声明时所在作用域下的this的值;
  2. 不能作为构造实例化对象;
  3. 不能使用 arguments 变量;

       代码演示

//  ES6允许使用箭头(=>)定义函数
        //  传统写法:无参数
        var say = function () {
            console.log("hello!");
        }
        say();
        //  ES6箭头函数: 无参数
        let speak = () => console.log("hello 哈哈!");
        speak();
        //  传统写法:一个参数
        var hello = function (name) {
            return "hello " + name;
        }
        console.log(hello("訾博"));
        //  ES6箭头函数:一个参数
        let hi = name => "hi " + name;
        console.log(hi("訾博"));
        //  传统写法:多个参数
        var sum = function (a, b, c) {
            return a + b + c;
        }
        console.log(sum(1, 2, 3));
        //  ES6箭头函数:多个参数
        let he = (a, b, c) => a + b + c;
        console.log(he(1, 2, 3));
        //  特性
        //  1、箭头函数的this是静态的,始终指向函数声明时所在作用域下的this的值 
        const school = {
            name: "大哥",
        }
        //  传统函数
        function getName() {
            console.log("getName:" + this.name);
        }
        //  箭头函数
        getName1 = () => console.log("getName1:" + this.name);
        window.name = "訾博";
        //  直接调用 
        getName();
        getName1();
        //  使用call调用 
        getName.call(school);
        getName1.call(school);
        //  结论:箭头函数的this是静态的,始终指向函数声明时所在作用域下的this的值
        //  2、不能作为构造实例化对象
        // let Persion = (name, age) => {
        //  this.name = name;
        //  this.age = age;
        // }
        //  let me = new Persion("訾博",24);
        //  console.log(me);
        //  报错:Uncaught TypeError: Persion is not a constructor
        //  3、不能使用 arguments 变量
        //  let fn = () => console.log(arguments);
        //  fn(1,2,3);
        //  报错:Uncaught ReferenceError: arguments is not defined

3. 模板字符串(Template Literals)

模板字符串(template string)是增强版的字符串,用反引号(`)标识,特点:

字符串中可以出现换行符;

可以使用 ${xxx} 形式引用变量;

代码演示:

//  声明字符串的方法:单引号('')、双引号("")、反引号(``)
        //  声明
        let string = `我也一个字符串哦!`;
        console.log(string);
        //  特性
        //  1、字符串中可以出现换行符 
        let str =
            `<ul>
                <li>大哥</li> 
                <li>二哥</li> 
                <li>三哥</li> 
                <li>四哥</li>
            </ul>`;
        console.log(str);
        //  2、可以使用 ${xxx} 形式引用变量 
        let s = "大哥";
        let out = `${s}是我最大的榜样!`;
        console.log(out);

4. 解构赋值(Destructuring Assignment)

什么是解构赋值:

ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构赋值

应用场景:

频繁使用对象方法、数组元素,就可以使用解构赋值形式;

5. 类和对象(Classes and Objects)

Classes 概述:

ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。通过 class 关键字,可以定义类。基本上,ES6 class 可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的 class 写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已;

知识点:

  1. class 声明类;
  2. constructor 定义构造函数初始化;
  3. extends 继承父类;
  4. super 调用父级构造方法;
  5. static 定义静态方法和属性;
  6. 父类方法可以重写;

对象扩展

概述:

ES6 新增了一些 Object 对象的方法:

  1. Object.is 比较两个值是否严格相等,与『===』行为基本一致(+0 NaN);
  2. Object.assign 对象的合并,将源对象的所有可枚举属性,复制到目标对象;
  3. protosetPrototypeOf setPrototypeOf 可以直接设置对象的原型;

6. Promise和异步编程

Promise概述:

Promise ES6 引入的异步编程的新解决方案。语法上 Promise 是一个构造函数,用来封装异步操作并可以获取其成功或失败的结果;

  1. Promise 构造函数: Promise (excutor) {}
  2. Promise.prototype.then 方法;
  3. Promise.prototype.catch 方法;

7. Symbol和迭代器(Symbol and Iterators)

ES6 引入了一种新的原始数据类型 Symbol,表示独一无二的值。它是JavaScript 语言的第七种数据类型,是一种类似于字符串的数据类型;

Symbol 特点:

  1. Symbol 的值是唯一的,用来解决命名冲突的问题;
  2. Symbol 值不能与其他数据进行运算;
  3. Symbol 定义的对象属性不能使用for…in循环遍历 ,但是可以使用Reflect.ownKeys 来获取对象的所有键名;

8. 模块化(Modules)

这些特性大大提高了JavaScript的灵活性、可读性和可维护性。在ES6中,开发者可以使用这些新功能来更快、更高效地编写JavaScript代码。

相关文章
|
运维 Kubernetes 安全
|
存储 机器学习/深度学习 前端开发
通义灵码的技术架构
通义灵码的技术架构
|
关系型数据库 MySQL
【问题处理】—— Mysql : You can‘t specify target table for update in FROM clause
【问题处理】—— Mysql : You can‘t specify target table for update in FROM clause
1442 1
|
8月前
|
测试技术 数据安全/隐私保护
自动刷视频app,全自动刷视频脚本,自动刷视频辅助器
这个代码展示了如何使用Selenium模拟人类观看视频的行为,包括随机滚动、暂停/播放和点赞等操作
|
10月前
|
数据安全/隐私保护
用雷池给网站配置身份认证
本文介绍了使用雷池实现网站身份认证的“一键懒人配置”方法。通过防护应用可快速开启认证功能,支持简易认证(访问时弹出认证界面)和统一认证(登录后访问所有权限内网址)。还提供了审批授权、特定条件跳过认证的功能,并详细说明了账号创建与权限分配步骤。适合不想写代码但需保护网站隐私的用户,具体第三方登录配置可参考官方文档。
242 0
用雷池给网站配置身份认证
|
11月前
|
人工智能 算法 自动驾驶
人工智能适合什么人学
本文探讨了适合学习人工智能(AI)的人群,涵盖技术爱好者、数学与逻辑能力出众者、跨学科背景人才、持续学习者及实践驱动者五大类。文章指出,AI领域需要热情与探索精神,同时依赖扎实的数学基础和逻辑思维。跨学科融合与实践经验也是掌握AI技术的关键。全球领先教育机构培生推出的生成式AI认证项目,为职场人士和学生提供了紧跟技术前沿的机会。最终强调,无论背景如何,保持开放心态与学习热情是进入AI领域的核心要素,共同迎接智能化未来。
|
人工智能 JavaScript 前端开发
通义灵码 2.0 全新升级,阿里云正式推出繁星计划
在上午的通义灵码 2.0 发布会上,阿里云正式推出通义灵码繁星计划。通义灵码繁星计划希望为每位开发者送一个智能编码助手,为职场、校园开发者提供不同维度的产品免费使用、体系化课程学习、人才认证考试等权益,同时长期建设通义灵码MVP、校园大使体系,激活创新潜力,培养创新明星,点亮追梦之旅。
|
移动开发 前端开发 rax
开放下载!1500页,40万字,淘系技术2020总结黑皮书来了
作为阿里巴巴新零售技术的王牌军,基于淘系丰富的商业和业务形态,淘系技术在大前端、音视频、端智能、用户增长、客户端架构、服务端架构、云原生、技术质量以及AI等技术领域有着丰富的思考和沉淀。淘系技术将2020一整年的精华内容梳理合并,重磅推出《技术人的百宝黑皮书》,本文从前沿技术、职场成长经验及学习问答、技术人必读书单、淘系经典开源项目以及2020淘系顶会paper等五个方面进行简要介绍。
开放下载!1500页,40万字,淘系技术2020总结黑皮书来了
【离散数学】命题逻辑
1. 命题 2. 联结词 3. 真值表 4. 等价公式 5. 蕴含式 6. 对偶式 7. 范式 8. 推理理论
670 0
【离散数学】命题逻辑
|
机器学习/深度学习 算法 数据挖掘
数据挖掘-支持向量机(SVM)+代码实现
数据挖掘-支持向量机(SVM)+代码实现
538 0
数据挖掘-支持向量机(SVM)+代码实现