爆肝五千字!ECMAScript核心概念与现代JavaScript特性全解析

news2025/2/25 3:23:01

🌟 前言

欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍

  • 🤖 洛可可白:个人主页

  • 🔥 个人专栏:✅前端技术 ✅后端技术

  • 🏠 个人博客:洛可可白博客

  • 🐱 代码获取:bestwishes0203

  • 📷 封面壁纸:洛可可白wallpaper

在这里插入图片描述

文章目录

  • 爆肝五千字!ECMAScript核心概念与现代JavaScript特性全解析
    • 基本语法
      • 1. 变量声明
      • 2. 数据类型
      • 3. 函数
      • 4. 条件语句
      • 5. 循环
      • 6. 数组
      • 7. 对象
      • 8. 类(ES6+)
      • 9. 模板字符串
      • 10. 解构赋值
      • 11. 异步编程(Promise和async/await)
    • 高级教程
      • 12. 模块导入(import/export)
      • 13. 集合(Set和Map)
      • 14. 异步迭代器(async iterable)
      • 15. 其他高级特性
    • 🎉 往期精彩回顾

爆肝五千字!ECMAScript核心概念与现代JavaScript特性全解析

ECMAScript(通常简称为 ES)是JavaScript的标准化规范,由Ecma International的TC39(技术委员会39)组织维护。ECMAScript定义了脚本语言的语法和行为,而JavaScript是ECMAScript规范的一种实现。以下是ECMAScript的一些核心语法特性:

基本语法

1. 变量声明

let x = 10; // 块级作用域的变量声明
const y = 20; // 常量声明,不可重新赋值

2. 数据类型

ECMAScript支持多种数据类型,包括:

  • 原始数据类型:字符串(String)、数字(Number)、布尔值(Boolean)、空值(null)、未定义(undefined)、符号(Symbol)
  • 复合数据类型:对象(Object)、数组(Array)、函数(Function)

3. 函数

function greet(name) {
  return `Hello, ${name}!`;
}

// 箭头函数
const greet = (name) => `Hello, ${name}!`;

4. 条件语句

if (condition) {
  // 代码块
} else {
  // 另一个代码块
}

// 条件(三元)运算符
const result = condition ? expression1 : expression2;

5. 循环

for (let i = 0; i < 10; i++) {
  // 循环体
}

while (condition) {
  // 循环体
}

do {
  // 循环体
} while (condition);

6. 数组

const fruits = ['Apple', 'Banana', 'Cherry'];

// 访问数组元素
console.log(fruits[0]); // Apple

// 修改数组元素
fruits[1] = 'Blueberry';

7. 对象

const person = {
  name: 'Alice',
  age: 25,
  greet: function() {
    console.log(`Hello, my name is ${this.name}.`);
  }
};

// 访问对象属性
console.log(person.name); // Alice

// 调用对象方法
person.greet();

8. 类(ES6+)

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  greet() {
    console.log(`Hello, my name is ${this.name}.`);
  }
}

const alice = new Person('Alice', 25);
alice.greet();

9. 模板字符串

const name = 'Alice';
const greeting = `Hello, ${name}!`;
console.log(greeting); // Hello, Alice!

10. 解构赋值

const [a, b] = [1, 2];
console.log(a); // 1
console.log(b); // 2

const { name, age } = { name: 'Alice', age: 25 };
console.log(name); // Alice
console.log(age); // 25

11. 异步编程(Promise和async/await)

const fetchData = () => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Data fetched');
    }, 1000);
  });
};

fetchData()
  .then(data => console.log(data))
  .catch(error => console.error(error));

// 使用async/await
async function fetchDataAsync() {
  try {
    const data = await fetchData();
    console.log(data);
  } catch (error) {
    console.error(error);
  }
}

fetchDataAsync();

这些是ECMAScript语法的一些基本元素。随着ECMAScript规范的不断发展,新的语法和特性不断被添加到JavaScript中,例如模块导入(import/export)、集合(Set和Map)、异步迭代器(async iterable)等。

高级教程

12. 模块导入(import/export)

在ECMAScript 6之前,JavaScript缺乏官方的模块系统。随着ES6的引入,importexport关键字使得模块化编程成为可能。模块化允许开发者将代码分割成独立的、可重用的单元,每个模块可以独立维护和更新。

// 导出单个值
export const myConstant = 'Hello, World!';

// 导出多个值
const myFunction = () => {
  // ...
};

export { myFunction };

// 导出默认值
export default myFunction;

// 导入模块
import { myConstant, myFunction } from './module.js';
import myDefaultFunction from './defaultModule.js';

13. 集合(Set和Map)

SetMap是ES6中引入的两种新的数据结构,它们提供了不同于数组和对象的数据存储方式。

  • Set是一个集合,它只存储唯一的值(不允许重复)。
  • Map是一个键值对的集合,其中的键可以是任何类型,包括函数、对象或任何原始类型。
// 使用Set
const mySet = new Set();
mySet.add(1);
mySet.add(2);
console.log(mySet.size); // 2

// 使用Map
const myMap = new Map();
myMap.set('key1', 'value1');
myMap.set('key2', 'value2');
console.log(myMap.get('key1')); // 'value1'

14. 异步迭代器(async iterable)

ECMAScript 8引入了异步迭代器的概念,它允许开发者在for...of循环中处理异步操作,如异步请求数据。

async function* asyncGenerator() {
  yield await Promise.resolve(1);
  yield await Promise.resolve(2);
  yield await Promise.resolve(3);
}

for await (const value of asyncGenerator()) {
  console.log(value); // 依次打印 1, 2, 3
}

在这个例子中,asyncGenerator是一个异步生成器函数,它可以异步地产生值。for await...of循环使得我们可以等待每个异步操作完成后再进行下一次迭代。

15. 其他高级特性

除了上述特性,ECMAScript还包括其他一些高级特性,如:

  • 默认参数值:允许在函数定义时为参数指定默认值。
  • rest参数:允许我们将不定数量的参数表示为一个数组。
  • spread操作符:用于将数组或可迭代对象的元素展开。
  • 类(Class):提供了一种新的语法糖,使得对象原型的写法更加清晰和易于理解。
  • 模块顶级等待(Top-level await):在ES12中引入,允许在模块的顶层使用await,这有助于处理动态导入。

这些特性共同推动了JavaScript语言的发展,使其在构建大型、复杂的应用程序方面变得更加强大和灵活。

如果对你有帮助,点赞、收藏、关注是我更新的动力!👋🌟🚀

🎉 往期精彩回顾

Ubuntu系统下C语言开发环境搭建与使用教程

  • 748阅读 · 14点赞 · 6收藏

Vue 3响应式系统详解:ref、toRefs、reactive及更多

  • 524阅读 · 16点赞 · 12收藏

爆肝两千字!掌握CSS选择器与响应式设计:从基础到高级应用

  • 842阅读 · 27点赞 · 28收藏

图文并茂!在Oracle VM VirtualBox上安装Ubuntu虚拟机的详细步骤指南

  • 1059阅读 · 36点赞 · 29收藏

在Vue中使用wangeditor创建富文本编辑器的完整指南

  • 1106阅读 · 20点赞 · 13收藏

Vue项目中使用ECharts构建交互式中国地图的详细指南

  • 759阅读 · 22点赞 · 10收藏

米哈游一面前端开发岗面试题,你会做几道?

  • 1236阅读 · 22点赞 · 24收藏

程序员必备开发工具、程序员必备集成开发环境(IDE)

  • 912阅读 · 36点赞 · 12收藏

Linux常用操作命令和服务器硬件基础知识

  • 887阅读 · 30点赞 · 10收藏

C语言中大小写字母如何转化

  • 824阅读 · 31点赞 · 29收藏

主流开发语言和开发环境、程序员如何选择职业赛道?

  • 1022阅读 · 34点赞 · 16收藏

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

KEY ENERGY欧洲意大利能源光伏储能展

3月1号第18届意大利里米尼国际可再生能源展&#xff08;KEY ENERGY&#xff09;由知名主办方ITALIAN EXHIBITION GROUP S.P.A组织举办&#xff0c;每年一届&#xff0c;是欧洲第二大能源展&#xff0c;也是覆盖范围最全知名度最高的可再生能源展览会。 该展会将于2024扩大规模…

【Mysql数据库基础03】分组函数(聚合函数)、分组查询

分组函数(聚合函数&#xff09;、分组查询 1 分组函数1.1 简单的使用1.2 是否忽略null值1.3 和关键字搭配使用1.4 count函数的详细介绍1.5 练习 2 分组查询Group by2.1 简单的分组查询2.2 练习 3 格式投票:yum: 1 分组函数 1.1 简单的使用 COUNT(expression)&#xff1a;计算符…

腾讯云服务器租用价格多少钱一个月?2024优惠价格表

2024腾讯云服务器多少钱一个月&#xff1f;5元1个月起&#xff0c;腾讯云轻量服务器4核16G12M带宽32元1个月、96元3个月&#xff0c;8核32G22M配置115元一个月、345元3个月&#xff0c;腾讯云轻量应用服务器61元一年折合5元一个月、4核8G12M配置646元15个月、2核4G5M服务器165元…

腾讯云服务器多少钱1个月?2024一个月收费阿济格IE吧

2024腾讯云服务器多少钱一个月&#xff1f;5元1个月起&#xff0c;腾讯云轻量服务器4核16G12M带宽32元1个月、96元3个月&#xff0c;8核32G22M配置115元一个月、345元3个月&#xff0c;腾讯云轻量应用服务器61元一年折合5元一个月、4核8G12M配置646元15个月、2核4G5M服务器165元…

计算机考研|双非一战135上岸,408经验分享+复盘

计算机专业的同学真的别想的太天真&#xff01; 相比于其他专业&#xff0c;计算机专业的同学其实还是很有优势的 但是现在随着计算机专业的同学越来越多&#xff0c;找工作的困难程度以及学历自然而然被卷起来了 以前的算法岗基本要求在本科以上&#xff0c;现在基本都是非92研…

MacBook远程控制工具VNC Viewer_亲测使用

MacBook远程控制工具VNC Viewer_亲测使用 官方下载地址: https://www.realvnc.com/en/connect/download/viewer/ MacBook远程桌面Windows使用Microsoft Remote Desktop for Mac_亲测使用 VNC 介绍 VNC (Virtual Network Console)是虚拟网络控制台的缩写。它是一款优秀的远程…

Flutter开发进阶之使用Socket实现主机服务(二)

Flutter开发进阶之使用Socket实现主机服务(二) Flutter开发进阶之使用Socket实现主机服务(一) 在完成局域网内设备定位后就可以进入微服务的实操了。 I、构建Socket连接池 一、定义Socket 使用socket_io_client socket_io_client: ^2.0.3+1导入头文件 import packag…

iOS图片占内存大小与什么有关?

1. 问&#xff1a;一张图片所占内存大小跟什么有关&#xff1f; 图片所占内存大小&#xff0c;与图片的宽高有关 我们平时看到的png、jpg、webp这些图片格式&#xff0c;其实都是图片压缩格式。通过对应的算法来优化了大小以节省网络传输与本地保存所需的资源。 但是当我们加…

信息学奥赛之C++ cstdlib – 概览

什么是 C cstdlib&#xff1f; C 标准库头文件 (cstdlib in C) 是 C 程序员使用最广泛的库头文件。即&#xff1a;standard librarian。它定义了一系列函数和宏&#xff0c;以实现跨团队、跨平台的高效且具有卓越表现的标准化 C 代码。 C 是一种广受欢迎的程序语言&#xff0c…

Java的图书管理系统,确实有两把斧子 ! ! !

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人…

php 页面中下载文件|图片

一、需求 页面中点击下载图片 二、实现 protected function pageLoad(){$filePath $_GET[file];$host $_SERVER[HTTP_HOST];$file http://.$host.$filePath;$fileName basename($filePath);$content file_get_contents($file);ob_clean();$suffixArr explode(., $file…

力扣大厂热门面试算法题 43-45

43. 字符串相乘&#xff0c;44. 通配符匹配&#xff0c;45. 跳跃游戏 II&#xff0c;每题做详细思路梳理&#xff0c;配套Python&Java双语代码&#xff0c; 2024.03.18 可通过leetcode所有测试用例。 目录 43. 字符串相乘 解题思路 完整代码 Python Java 44. 通配符…

【JAVA快速编写UI】 Java 编写一个编码转换和加解密工具,可以创建一个简单的 GUI 应用程序(例子)

EncodingDecodingTool/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── rockmelodies/ │ │ │ └── encodingdecodingtool/ │ │ │ ├── MainApp.java │ │ │ …

MongoDB启动报错

spring boot 引入MongoDB启动报错 java.lang.IllegalStateException: Failed to introspect Class [io.micrometer.core.instrument.binder.mongodb.DefaultMongoConnectionPoolTagsProvider] from ClassLoader [sun.misc.Launcher$AppClassLoader18b4aac2] at org.springfra…

初识STL(标准模板库)

目录 ​编辑 什么是STL STL的版本 STL的六大组件 如何学习STL STL的优势 STL的缺陷 ⭐什么是STL STL(standard template libaray- 标准模板库 ) &#xff1a; 是 C 标准库的重要组成部分 &#xff0c;不仅是一个可复用的组件库&#xff0c;而且 是一个包罗数据结构与算法…

C语言笔记:函数与程序结构

目录 ACM金牌带你零基础直达C语言精通-课程资料 一.作用域的基本概念 二.函数 1. 函数的定义和使用 2.为什么一定要有函数结构 3.形参与实参 4.函数的声明和定义 5.递归函数 此代码中递归函数执行流程&#xff1a; 练习&#xff1a;求斐波那契数列第n项的值&#xff1a; 欧几里…

洛谷_P1104 生日_python写法

P1104 生日 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 知识点&#xff1a; 还是自定义规则的排序&#xff0c;然后这里还有python中如何在一行中输入多种类型的数据。 n int(input()) data [] num 1 for i in range(n):img list(input().split())s img[0]y int(img…

【unity与android的交互】移动游戏发布更安心!Unity安卓平台打包相关的常见参数全详解

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

深度学习500问——Chapter03:深度学习基础(3)

文章目录 3.5 Batch Size 3.5.1 为什么需要 Batch size 3.5.2 Batch Size 值的选择 3.5.3 在合理范围内&#xff0c;增大Batch Size有何好处 3.5.4 盲目增大 Batch Size有何坏处 3.5.5 调节Batch Size对训练效果影响到底如何 3.6 归一化 3.6.1 归一化含义 3.6.2 为什么…

大模型知识库

一种利用 langchain 思想实现的基于本地知识库的问答应用&#xff0c;目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。 1. 下载Langchain-chatchat git clone https://github.com/chatchat-space/Langchain-Chatchat/ 2. 下载大模型和embe…