复习回顾ES6基础篇(一小时学会es6)

基本语法

  • 多行注释
/*
这里的所有内容
都是注释。
*/

  • 单行注释
// 这是一条注释。
  • 变量定义
var x = ""  //定义范围变量
let y = ""  //定义局部变量
const z = "" //定义常量
  • 运算符

在这里插入图片描述

  • 变量类型
    在这里插入图片描述+ 流程语句
if (condition) {
  /* 条件为真时运行的代码 */
} else {
  /* 否则,运行其他的代码 */
}

在这里插入图片描述

switch (表达式) {
  case 选择1:
    运行这段代码
    break;

  case 选择2:
    否则,运行这段代码
    break;

  // 包含尽可能多的情况

  default:
    实际上,仅仅运行这段代码
}

// 三元运算
condition ? 运行这段代码 : 否则,运行这段代码
  • 循环语句
for (initializer; exit-condition; final-expression) {
  // code to run
}
while (exit-condition) {
  // code to run

  final-expression
}
do {
  // code to run

  final-expression
} while (exit-condition)
  • 函数与方法

单独定义的被称为函数,类的成员变量被称为方法。

// 定义
function draw() {
  ctx.clearRect(0, 0, WIDTH, HEIGHT);
  for (let i = 0; i < 100; i++) {
    ctx.beginPath();
    ctx.fillStyle = "rgb(255 0 0 / 50%)";
    ctx.arc(random(WIDTH), random(HEIGHT), random(50), 0, 2 * Math.PI);
    ctx.fill();
  }
}

// 调用
draw()
// 匿名函数
(function () {
  alert("你好");
});
// 箭头函数
a = ()=>{
    console.log("hello");
}
a()
  • 对象

对象是一个包含相关数据和方法的集合

const person = {
  name: ["Bob", "Smith"],
  age: 32,
  bio: function () {
    console.log(`${this.name[0]} ${this.name[1]} 现在 ${this.age} 岁了。`);
  },
  introduceSelf: function () {
    console.log(`你好!我是 ${this.name[0]}`);
  },
};

对象的this关键字指向了当前代码运行时的对象

// 声明式创建对象实例
var per = Person{}

// new关键字创建实例
const salva = new Person();
bio: function () {
    console.log(`${this.name[0]} ${this.name[1]} 现在 ${this.age} 岁了。`);
},

类中声明方法 name: function(){} 可以简写name(){}

在 ES6 中新增加了类的概念,可以使用 class 关键字声明一个类,类抽象了对象的公共部分,使对象具有通用性。

class Person {
  name;

  constructor(name) {
    this.name = name;
  }

  introduceSelf() {
    console.log(`Hi! I'm ${this.name}`);
  }
}

extends关键字实现继承。

class Professor extends Person {
  teaches;

  constructor(name, teaches) {
    super(name);
    this.teaches = teaches;
  }

  introduceSelf() {
    console.log(
      `My name is ${this.name}, and I will be your ${this.teaches} professor.`,
    );
  }

  grade(paper) {
    const grade = Math.floor(Math.random() * (5 - 1) + 1);
    console.log(grade);
  }
}

在类中私有数据属性必须在类的声明中声明,而且其名称需以 # 开头。

class Student extends Person {
  #year;

  constructor(name, year) {
    super(name);
    this.#year = year;
  }

  introduceSelf() {
    console.log(`Hi! I'm ${this.name}, and I'm in year ${this.#year}.`);
  }

  canStudyArchery() {
    return this.#year > 1;
  }
}

与私有数据属性一样,你也可以声明私有方法。而且名称也是以#开头,只能在类自己的方法中调用

类与对象的序列化,在js中类序列化为json,也可以序列化为json字符串,用于传输。

拓展运算符(…)用于取出参数对象所有可遍历属性然后拷贝到当前对象。

let person = {name: "Amy", age: 15};
let someone = { ...person };
someone;  //{name: "Amy", age: 15}

JS模块化

javascript是用于web交互的独立脚本,一般的网页由html,css,javascript共同构成。

www学院

mozilla web docs

例如,如下的文件就构成了一个静态网页

在这里插入图片描述
在这里插入图片描述
在html中通过<script>标签引入js脚本就可以实现交互。

随着前段基数的发展,网页做的越来越复杂,通过这种引入的方式十分棘手,有必要考虑一种可以将javascript程序拆分开的独立模块机制。于是诞生了ES6 CommonJS等规范。

ES6在语言标准的层面上,实现了模块功能,其模块功能主要由两个命令构成: exportimport。export命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能。

在这里插入图片描述

导出模块

// 分开导出
export const name = "square";

export function draw(ctx, length, x, y, color) {
  ctx.fillStyle = color;
  ctx.fillRect(x, y, length, length);

  return {
    length: length,
    x: x,
    y: y,
    color: color,
  };
}

// 一次导出
export { name, draw, reportArea, reportPerimeter };

导入模块

在模块外面使用一些功能就需要导入该模块。

import { name, draw, reportArea, reportPerimeter } from '/js-examples/modules/basic-modules/modules/square.js';

模块文件的路径是相对于站点根目录的相对路径

在你的 import 和 export 语句的大括号中,可以使用 as 关键字跟一个新的名字,来改变你在顶级模块中将要使用的功能的标识名字。

// inside module.js
export { function1 as newFunctionName, function2 as anotherNewFunctionName };

// inside main.js
import { newFunctionName, anotherNewFunctionName } from "/modules/module.js";

更多语法参考www学院

commonJS和ES6模块化的区别
CommonJS和ES6模块的区别

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/550581.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LVM与磁盘配额

目录 一.LVM概述 1.LVM &#xff08;Logical Vokume Manager &#xff09;逻辑卷管理 2.LVM的管理命令 3.创建并使用LVM操作步骤 二.磁盘配额概述 1.实现磁盘限额的条件 2.Linux磁盘限额的特点 3.实现磁盘配额的步骤 三.总结&#xff1a; 一.LVM概述 1.LVM &#xff…

【静态分析】软件分析课程实验-前置准备

课程&#xff1a;南京大学的《软件分析》课程 平台&#xff1a;Tai-e&#xff08;太阿&#xff09;实验作业平台 1. 实验概述 Tai-e 是一个分析 Java 程序的静态程序分析框架&#xff0c;相比于已有的知名静态程序分析框架&#xff08;如 Soot、Wala 等&#xff09;&#xf…

《手把手教你》系列基础篇(九十二)-java+ selenium自动化测试-框架设计基础-POM设计模式简介(详解教程)

1.简介 页面对象模型&#xff08;Page Object Model&#xff09;在Selenium Webdriver自动化测试中使用非常流行和受欢迎&#xff0c;作为自动化测试工程师应该至少听说过POM这个概念。本篇介绍POM的简介&#xff0c;接下来宏哥一步一步告诉你如何在你JavaSelenium3自动化测试…

算法打卡day36

今日任务&#xff1a; 1&#xff09;01背包问题理论基础(卡码网&#xff1a;46. 携带研究材料) 2&#xff09;01背包问题滚动数组(卡码网&#xff1a;46. 携带研究材料) 3&#xff09;416. 分割等和子集 4&#xff09;复习day11 卡码网&#xff1a;46. 携带研究材料 题目链接&…

35、链表-LRU缓存

思路&#xff1a; 首先要了解LRU缓存的原理&#xff0c;首先定下容量&#xff0c;每次get请求和put请求都会把当前元素放最前/后面&#xff0c;如果超过容量那么头部/尾部元素就被移除&#xff0c;所以最近最少使用的元素会被优先移除&#xff0c;保证热点数据持续存在。 不管放…

排序(三)——快速排序(递归以及栈和队列实现非递归)超详细

目录 1.hoare法 2.挖坑法 3.前后指针法 4.快排的非递归 4.1 栈实现快排非递归 4.2 队列实现快排非递归 快排我们之前在学习通讯录的时候就用了&#xff0c;那时候我们知道快排是一个很牛逼的排序算法&#xff0c;那他到底是怎么实现的呢&#xff1f; 1.hoare法 快速排序…

【Redis 神秘大陆】003 数据类型使用场景

三、Redis 数据类型和使用场景 Hash&#xff1a;对象类型的数据&#xff0c;购物车List&#xff1a;队列/栈Set&#xff1a;String类型的无序集合&#xff0c;intset&#xff0c;抽奖、签到、打卡&#xff0c;商品评价标签Sorted Set&#xff1a;存储有序的元素&#xff0c;zip…

六、OpenFeign服务接口调用

一、提问 已经有loadbalancer为什么还要学习OpenFeign? 两个都有道理的话&#xff0c;日常用那个&#xff1f; 二、是什么 OpenFeign是什么 官网翻译 Feign是一个声明性web服务客户端。它使编写web服务客户端变得更容易。使用Feign创建一个接口并对其进行注释。它具有可…

【InternLM 实战营第二期笔记】LMDeploy 量化部署 LLMVLM实战

Huggingface与TurboMind介绍 Huggingface HuggingFace是一个高速发展的社区&#xff0c;包括Meta、Google、Microsoft、Amazon在内的超过5000家组织机构在为HuggingFace开源社区贡献代码、数据集和模型。可以认为是一个针对深度学习模型和数据集的在线托管社区&#xff0c;如…

python 列表对象函数

对象函数必须通过一个对象调用。 列表名.函数名() append() 将某一个元素对象添加在列表的表尾 如果添加的是其他的序列&#xff0c;该序列也会被看成是一个数据对象 count() 统计列表当中 某一个元素出现的次数 extend() 在当前列表中 将传入的其他序列的元素添加在表尾…

【AIGC】AIGC在虚拟数字人中的应用:塑造未来互动体验的革新力量

&#x1f680; &#x1f680; &#x1f680;随着科技的快速发展&#xff0c;AIGC已经成为引领未来的重要力量。其中&#xff0c;AIGC在虚拟数字人领域的应用更是引起了广泛关注。虚拟数字人作为一种先进的数字化表达形式&#xff0c;结合了3D建模、动画技术、人工智能等多种先进…

Kubernetes对象的定义和操作

&#x1f4d5;作者简介&#xff1a; 过去日记&#xff0c;致力于Java、GoLang,Rust等多种编程语言&#xff0c;热爱技术&#xff0c;喜欢游戏的博主。 &#x1f4d8;相关专栏Rust初阶教程、go语言基础系列、spring教程等&#xff0c;大家有兴趣的可以看一看 &#x1f4d9;Jav…

数据密集型应用系统设计 PDF 电子书(Martin Kleppmann 著)

简介 《数据密集型应用系统设计》全书分为三大部分&#xff1a; 第一部分&#xff0c;主要讨论有关增强数据密集型应用系统所需的若干基本原则。首先开篇第 1 章即瞄准目标&#xff1a;可靠性、可扩展性与可维护性&#xff0c;如何认识这些问题以及如何达成目标。第 2 章我们比…

PHP反序列化命令执行+PHP反序列化POP大链 +PHP反序列化基础

[题目信息]&#xff1a; 题目名称题目难度PHP反序列化命令执行1 [题目考点]&#xff1a; 反序列化命令执行&#xff0c;获取题目flag。[Flag格式]: SangFor{t5euvZ_OB8Jd_h2-}[环境部署]&#xff1a; docker-compose.yml文件或者docker tar原始文件。 docker-compose up …

内外网文件摆渡系统,如何贯通网络两侧被隔断的工作流?

随着业务范围不断扩大&#xff0c;产生的数据体量越来越多&#xff0c;企业会采取网络隔离&#xff0c;对核心数据进行保护。网络隔离主要目的是保护企业内部的敏感数据和系统不受外部网络攻击的风险&#xff0c;可以通过物理或逻辑方式实现&#xff0c;例如使用防火墙、网闸、…

电商技术揭秘二十六:智能库存预警与补货系统(下)

相关系列文章 电商技术揭秘一&#xff1a;电商架构设计与核心技术 电商技术揭秘二&#xff1a;电商平台推荐系统的实现与优化 电商技术揭秘三&#xff1a;电商平台的支付与结算系统 电商技术揭秘四&#xff1a;电商平台的物流管理系统 电商技术揭秘五&#xff1a;电商平台…

我的思考工作流(2024年版)

去年底&#xff0c;我对自己的思考工作流程又做了一些优化和改进&#xff0c;把它变得更为简洁、清晰。 因此&#xff0c;今天我想把它分享给大家&#xff0c;希望能给你一些启发。 我的核心方法论依然是我自己提出的「INKP知识管理法」&#xff08;参见《打开心智》第五章&…

【刷题笔记】第七天

文章目录 [924. 尽量减少恶意软件的传播](https://leetcode.cn/problems/minimize-malware-spread/)方法一&#xff0c;并查集方法二&#xff0c;dfs [GCD and LCM ](https://vjudge.net.cn/problem/HDU-4497#authorKING_LRL) 924. 尽量减少恶意软件的传播 如果移除一个感染节…

电机控制器电路板布局布线参考指导(五)

电机控制器电路板布局布线参考指导&#xff08;五&#xff09;大容量电容和旁路电容的放置 1.大容量电容的放置2.电荷泵电容器3.旁路电容/去耦电容的放置3.1 靠近电源3.2 靠近功率器件3.3 靠近开关电流源3.4 靠近电流感测放大器3.5 靠近稳压器 tips&#xff1a;资料主要来自网络…

环境搭建创建项目_使用DevEco开发工具进行开发_创建项目_认识项目结构---HarmonyOS4.0+鸿蒙NEXT工作笔记001

首先去下载DevEco Studio然后再去安装就可以了 安装下一步下一步非常简单 首先去安装nodejs,可以看到,有两个安装方法,左边是自己安装的制定文件夹就可以了,然后 右边是使用鸿蒙自带的,我们选择第二个 然后我们看这个ohpm其实就跟npm是一个意思,用来管理鸿蒙的包的. 这里我们…
最新文章