简单聊一聊js

JavaScript 是一种高级的、解释型的编程语言。它是现代 Web 开发的三大核心基石之一,与 HTML 和 CSS 并列。

  • HTML​:负责网页的结构和内容​(如标题、段落、图片)。

  • CSS​:负责网页的样式和布局​(如颜色、字体、间距)。

  • JavaScript​:负责网页的行为与交互​(如点击按钮弹出菜单、数据验证、动态更新内容)。

如今,JavaScript 早已超越了浏览器,通过 Node.js 等环境,它可以用于服务器端编程、桌面应用、移动应用甚至物联网设备。


核心概念一:JavaScript 是什么?

  1. 解释型语言 (Interpreted)​​:代码在运行时逐行被解释和执行,无需像 C++ 或 Java 那样先编译成二进制文件。这使得开发迭代非常快速。

  2. 动态类型 (Dynamically Typed)​​:变量在声明时不需要指定其数据类型(如 string, number)。同一个变量可以在不同时刻被赋予不同类型的值。

    let x = 10;      // x 是一个数字
    x = "Hello";     // 现在 x 是一个字符串
  3. 单线程与异步机制​:JavaScript 在浏览器中通常是单线程运行的,这意味着它一次只能做一件事。为了处理耗时的操作(如网络请求、读写文件)而不阻塞界面,它使用了事件循环 (Event Loop)​​ 和回调函数 (Callbacks)​​ 机制,后来又发展出 ​Promise​ 和 ​async/await​ 语法,使得异步代码更容易编写和理解。

  4. 基于原型 (Prototype-based)​​:JavaScript 是一种基于原型的面向对象语言,而不是基于类的(尽管 ES6 引入了 class语法糖,但其底层仍然是基于原型)。对象可以直接从其他对象继承属性和方法。


核心概念二:JavaScript 能做什么?

  1. 浏览器端 (前端)​​:

    • 操作 DOM​:动态地添加、删除、修改 HTML 元素和 CSS 样式。

    • 处理事件​:响应用户的操作,如点击、鼠标移动、键盘输入、表单提交等。

    • 数据验证​:在表单提交到服务器前,先检查用户输入的数据是否有效。

    • 与服务器通信​:通过 AjaxFetch API从服务器获取数据,或向服务器发送数据,从而实现页面的无刷新更新(这构成了现代单页应用 SPA 的基础)。

    • 动画​:创建复杂的动画和效果。

  2. 服务器端 (后端)​​:

    • 通过 ​Node.js​(一个让 JavaScript 脱离浏览器运行的运行时环境),可以构建快速的、可扩展的网络应用和服务器。

    • 可以处理数据库操作、用户认证、API 接口开发等(常见框架有 Express.js, Koa.js)。

  3. 其他领域​:

    • 桌面应用​:使用 Electron(如 VS Code, Slack, Discord)或 NW.js。

    • 移动应用​:使用 React Native, Ionic 或 NativeScript。

    • 游戏开发​:常与 HTML5 Canvas 或 WebGL 结合使用。

    • 物联网 (IoT)​​:运行在资源受限的设备上。


核心概念三:现代 JavaScript (ES6+) 的重要特性

自 2015 年发布 ES6 (ECMAScript 2015) 以来,JavaScript 语言发生了巨大的进化,添加了许多使代码更简洁、更强大的新特性。这些是现代开发的基础。

  1. letconst声明​:取代老旧的 var,提供了块级作用域和更 predictable 的变量行为。const用于声明常量。

    if (true) {let blockScoped = "I'm inside the block";const constantValue = "I cannot be changed";
    }
    // console.log(blockScoped); // 会报错,因为 blockScoped 在这里不存在
  2. 箭头函数 (Arrow Functions)​​:提供了一种更简洁的函数写法,并且不绑定自己的 this值。

    // 传统函数
    const addOld = function(a, b) {return a + b;
    };// 箭头函数
    const addNew = (a, b) => a + b;
  3. 模板字符串 (Template Literals)​​:使用反引号 `${}语法来嵌入变量和表达式,支持多行字符串。

    const name = "Alice";
    const greeting = `Hello, ${name}!
    Welcome to our website.`;
  4. 解构赋值 (Destructuring Assignment)​​:从数组或对象中快速提取值并赋给变量。

    // 数组解构
    const [first, second] = [10, 20];// 对象解构 - 在 React 中提取 props 时极其常用!
    const person = { name: 'Bob', age: 30 };
    const { name, age } = person;
  5. 模块化 (Modules)​​:使用 importexport语法来组织和复用代码,这是构建大型应用的关键。

    // math.js (导出)
    export const pi = 3.14;
    export function add(a, b) { return a + b; }// app.js (导入)
    import { pi, add } from './math.js';
  6. Promise 和 async/await​:用于更优雅地处理异步操作,避免“回调地狱”。

    // 使用 Promise 和 async/await 获取数据
    async function fetchData() {try {const response = await fetch('https://api.example.com/data');const data = await response.json();console.log(data);} catch (error) {console.error('Error:', error);}
    }
  7. 扩展运算符和剩余参数​:...运算符,用于展开数组/对象或收集参数。

    // 展开数组
    const parts = ['shoulders', 'knees'];
    const body = ['head', ...parts, 'toes']; // ['head', 'shoulders', 'knees', 'toes']// 收集剩余参数
    function logArguments(first, ...rest) {console.log(first, rest);
    }

JavaScript 与 React 的关系

  • React 是一个用 JavaScript 编写的库。要学习 React,你必须先牢固掌握 JavaScript,特别是 ​ES6+ 的现代特性

  • React 组件本质上就是返回 JSX 的 JavaScript 函数。你在组件中使用的所有逻辑(变量、函数、条件判断、循环、状态管理)都是纯正的 JavaScript。

  • 理解 JavaScript 的数组方法​(如 map, filter, reduce)、对象操作解构赋值异步处理对于编写高效的 React 代码至关重要。

总结

JavaScript 是一门强大、灵活且无处不在的编程语言,它是 Web 交互性的灵魂。从简单的表单验证到复杂的全栈应用,JavaScript 都是不可或缺的核心技术。学习现代 JavaScript (ES6+) 的特性,是成为一名高效的前端或后端(Node.js)开发者的必经之路。

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

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

相关文章

造粒机cad+设计说明书

摘要 随着现代化工业的快速发展,生产出大量的固体废弃物。这些废弃物对环境造成了很大的污染,因此需要采取有效的措施进行处理。机械强压式造粒机就是一种非常有效的处理工具,它可以将废渣、废料、饲料和化肥等材料通过机械强力挤压&#xff…

第五课 C#语言基本元素概览,初始类型,变量与方法,算法简介

熟悉C#语言要求:对构成C#语言的基本元素,随便拿出一个你都认识,对于常见基本元素,都能正确使用它 精通C#语言要求:对于构成C#语言的基本元素,随便拿出一个都会使用,对于常用基本元素&#xff0…

LLM学习:大模型基础——视觉大模型以及autodl使用

1、常见的VLM 在大模型中,VLM 是视觉语言模型(Vision-Language Model)的缩写,是一种多模态、生成式 AI 模型,能够理解和处理视频、图像和文本。 VLM 通过将大语言模型(LLM)与视觉编码器相结合构建而成,使 LLM 具有 “看” 的能力,从而可以处理并提供对提示中的…

Vue—路由配置中设置了meta.title,但页面标题仍然显示为“Vite App“?【让我来看看~】

路由配置中明明设置了meta.title,但是页面标题仍然显示为"Vite App"?这是因为仅仅在路由配置中设置meta.title是不够的,还需要在路由守卫中动态设置页面标题。需要做以下几件事来正确设置页面标题:1.首先更新HTML文件的…

【机器学习】综合实训(二)

项目五 电影评分预测【教学内容】使用 MovieLens 数据集,训练一个模型预测用户对电影的评分。主要有以下几个知识点:(1)数据加载与探索性分析(EDA)。(2)处理稀疏数据(如用…

STM32 UART + DMA + 空闲中断使用中的帧错误(FE)问题及解决方案

STM32 UART + DMA + IDLE中断使用中的帧错误(FE)问题及解决方案 在我调试STM32H7串口空闲中断DMA接受时遇到了一个bug,这个现象发生在系统刚上电时,有个串口由于帧错误FE挂起了中断,之后在HAL_UART_IRQHandler这个全局中断处理函数结束后,所有的中断使能标志位都被清除了,经过…

TDengine 选择函数 BOTTOM() 用户手册

BOTTOM() 函数用户手册 函数定义 BOTTOM(expr, k)功能说明 BOTTOM() 函数统计表/超级表中某列的值最小 k 个非 NULL 值。如果多条数据取值一样,全部取用又会超出 k 条限制时,系统会从相同值中随机选取符合要求的数量返回。 返回值 数据类型: 同应用…

西门子 S7-200 SMART PLC 实现星三角降压启动控制:原理、案例与完整程序

在工业控制场景中,中型异步电机直接启动时会产生远超额定电流的冲击电流(通常为额定电流的 5-7 倍),不仅会影响电网稳定性,还可能对机械设备造成损伤。星三角(Y-Δ)降压启动是解决这一问题的经典…

【Android】View 的基础知识

【Android】View 的基础知识 1. 什么是 View? View 是 Android 中所有UI组件的基础类。它表示屏幕上的一个矩形区域,负责绘制内容和处理用户交互事件。所有的 UI 组件(如按钮、文本框等)都是 View 的子类,而 ViewGroup…

西门子 S7-200 SMART PLC 实现电机点动与连续运行综合控制

在工业生产中,电机控制并非单一模式:调试设备时需要 “按动即转、松开即停” 的点动功能,正常生产时则需要 “一键启动、持续运行” 的连续控制。本文以西门子 S7-200 SMART PLC 为载体,详细讲解电机点动控制原理,并设…

如何解决pip安装报错ModuleNotFoundError: No module named ‘sphinx-rtd-theme’问题

【Python系列Bug修复PyCharm控制台pip install报错】如何解决pip安装报错ModuleNotFoundError: No module named ‘sphinx-rtd-theme’问题 摘要 在使用 PyCharm 开发 Python 项目时,pip install 报错是常见痛点。特别是在构建文档或引入第三方库时,开…

HakcMyVM-Literal

目录信息搜集漏洞利用权限提升信息搜集 主机发现 ┌──(kali㉿kali)-[~] └─$ nmap -sn 192.168.21.0/24 Nmap scan report for 192.168.21.5端口扫描 ┌──(kali㉿kali)-[~] └─$ nmap -sS -sV -O -p- 192.168.21.5 Starting Nmap 7.95 ( https://nmap.org ) a…

0904 类的继承

Part 1.梳理思维导图一.继承中的特殊成员函数1.构造函数父类的构造函数会被继承到子类中&#xff0c;在构造的顺序中&#xff0c;是先构造父类&#xff0c;再构造子类#include <iostream>using namespace std;class Father { public:string name; protected:int *age; pr…

PDF教程|如何把想要的网页保存下来?

前段时间有个小伙伴咨询了小白&#xff1a;领导想要某个网页的整个页面&#xff0c;有没有比较好的方法把它保存下来&#xff1f; 在他找到小白之前&#xff0c;这种事情他已经接到好几次了&#xff0c;每次都是怎么解决的呢&#xff1f;其实很简单&#xff0c;就是打开Word&a…

【bash】命令查看当前目录下文件个数

要用 ls 查看当前目录下的文件个数&#xff0c;可以结合 wc -l 来统计行数&#xff1a; ls -1 | wc -l说明&#xff1a; ls -1&#xff1a;以一行一个文件的方式列出。wc -l&#xff1a;统计行数&#xff0c;也就是文件/目录的数量。 ⚠️ 需要注意&#xff1a; 这个方法会把文…

「日拱一码」081 机器学习——梯度增强特征选择GBFS

目录 什么是梯度增强特征选择&#xff08;GBFS&#xff09; 为什么 GBM 适合做特征选择 GBFS 的一般步骤 代码示例 什么是梯度增强特征选择&#xff08;GBFS&#xff09; GBFS 并非一个像 Lasso 或随机森林那样有严格标准定义的独立算法&#xff0c;而是一种基于梯度提升机…

解构汇编, 万物起源

汇编的诞生汇编全景图核心主干: CPU架构主要分支: 语法和工具共同的地貌: 核心概念延伸: 跨平台 & 跨架构跨平台跨架构总结以 GAS vs. NASM 为例NASM 不支持跨架构 ≠ 无法在ARM架构上的系统安装汇编的诞生 机器语言的困境 早期的程序员直接使用机器语言进行编程机器语言由…

广州旅游网站系统 - 纯静态旅游展示平台

&#x1f31f; 广州旅游网站系统 - 纯静态旅游展示平台观世界才有世界观 - 一个集景区展示、旅游攻略、文化传播于一体的精美旅游网站&#x1f4cb; 项目概述 这是一个专注于广州旅游文化的纯静态网站系统&#xff0c;采用现代化的前端技术栈&#xff0c;为游客提供全方位的广州…

Qt UDP通信学习

Qt UDP通信学习 一、项目概述 本项目基于Qt框架实现了UDP通信功能&#xff0c;支持单播与广播消息收发&#xff0c;展示了UDP套接字的基本用法&#xff0c;适合初学者学习Qt网络模块的实际应用。 二、项目结构 55.pro&#xff1a;Qt工程文件&#xff0c;配置模块与源码文件main…

古德哈特定律(Goodhart‘s Law)

古德哈特定律&#xff08;Goodhart’s Law&#xff09;表述为“当一个指标变成了目标&#xff0c;它将不再是个好指标”。 该定律由英国经济学家查尔斯古德哈特&#xff08;Charles Goodhart&#xff09;在1975年提出&#xff0c;最初用于批判撒切尔夫人政府的货币主义政策&…