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

devtools/2024/11/8 18:25:36/

基本语法

  • 多行注释
/*
这里的所有内容
都是注释。
*/
  • 单行注释
// 这是一条注释。
  • 变量定义
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 runfinal-expression
}
do {// code to runfinal-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.ppmy.cn/devtools/5827.html

相关文章

Mac下删除旧版本.net sdk

参照微软官网给的方法&#xff0c;Releases dotnet/cli-lab (github.com) 好像不能直接的解决问题&#xff0c;我做一下补充&#xff0c;希望对需要删除旧版本sdk的小伙伴们有所帮助 1:下载工具包 Releases dotnet/cli-lab (github.com) 2:打开终端&#xff0c;cd切换到该…

011 springboot整合mybatis-plus 首页加载热商品food评分前8的食物

文章目录 ConfigRegistCenter.javaMybatisplusConfig.javaRedisConfig.javaFoodController.javaFood.javaJwtInterceptor.javaFoodMapper.javaIFoodService.javaFoodServiceImpl.javaJwtUtil.javaServerResult.javaServletInitializer.javaSpringbootLoginApplication.javafood…

Midjourney指南 - 生成高分辨率图片(内容已更新至V5)

Midjourney 首先为每个作业生成一个低分辨率图片网格(2x2)。你可以在选择其中任一图片&#xff0c;使用 Midjourney upscaler 来增加尺寸并添加更多细节。有多种可用于放大图像的放大模型。 每个图像网格下方的按钮用于放大所选图像。U1 U2 U3 U4 注&#xff1a;upscaler 以下…

Xamarin.Android中“ADB0020: Android ABI 不匹配。你正将应用支持的“armeabi-v7a;arm64-v8a”异常处理

这里写自定义目录标题 1、问题2、解决 1、问题 在Xamarin.Android中出现ADB0020: Android ABI 不匹配。你正将应用支持的“armeabi-v7a;arm64-v8a”ABI 部署到 ABI“x86_64;x86”的不兼容设备。应创建匹配其中一个应用 ABI 的仿真程序&#xff0c;或将“x86_64”添加到应用生成…

arm 作业 24/4/17

1、主机向从机发送多个字节的数据 主机发送起始信号 主机发送8bit从机地址1bit写标志&#xff08;0&#xff09; 从机回应应答信号 主机发送8bit从机的寄存器地址 从机回应应答信号 主机发送8bit数据 从机回应应答 主机发送8bit数据 从机回应应答 ………… 主机发起…

ARM-学习day8

使用温湿度采集&#xff0c;控制灯&#xff0c;风扇和马达. lic.h #ifndef __IIC_H__ #define __IIC_H__#include"stm32mp1xx_gpio.h" #include"stm32mp1xx_rcc.h"#define SET_SDA_OUT do{GPIOF->MODER & (~(0x3 << 30)); \GPIOF->M…

unity学习(85)——同步节奏(tcp架构确实有问题)

挂的时间长了&#xff0c;就出现其他下线本地不destroy的情况了&#xff0c;而且此时再登录&#xff0c;新渲染中已经没有已经下线的玩家 unity这边就没有收到126&#xff01;&#xff01;&#xff01;125的问题是多种多样的&#xff01;&#xff01;&#xff01; 化简服务器w…

Harmony OS-4.0应用开发(第二章了解)

2.6了解基本工程目录 2.6.1工程级目录 程的目录结构如下。 工 其中详细如下&#xff1a; AppScope中存放应用全局所需要的资源文件。entry是应用的主模块&#xff0c;存放HarmonyOS应用的代码、资源等。oh_modules是工程的依赖包&#xff0c;存放工程依赖的源文件。build-…