【三大前端语言之一】交互:JavaScript详解

【三大前端语言之一】交互:JavaScript详解

在学习完HTML和CSS之后,最后一门前端语言——JavaScript,是重中之重。HTML负责页面结构,CSS负责页面样式,而JavaScript则赋予网页“生命”,让网页可以动起来、响应用户操作,实现各种动态交互效果。

本文将系统介绍JavaScript的核心概念与常用知识,包括语法基础、数据类型、控制结构、函数、对象、DOM操作、事件机制、异步编程、模块化、以及在现代前端开发中的实际应用。无论你是初学者,还是希望打好JavaScript基础的开发者,这篇文章都将为你提供全面、深入又易于理解的学习资料。


一、JavaScript简介

什么是JavaScript?

JavaScript是一种运行在浏览器端的脚本语言,用于增强网页的交互性。它可以用来响应用户操作、操作DOM、发送请求、处理数据,甚至构建整个前端应用。

JavaScript的特点:

  • 解释性语言:不需要编译,浏览器直接解释执行。
  • 基于对象:支持面向对象编程。
  • 弱类型动态语言:变量类型可变,使用灵活。
  • 事件驱动:用户交互可触发事件执行。
  • 跨平台:只要有浏览器就能运行。

二、JavaScript语法基础

1. 变量定义

let name = "Tom";
const PI = 3.14;
var age = 20;
  • let:块级作用域,推荐使用。
  • const:定义常量。
  • var:函数级作用域,已逐渐被淘汰。

2. 数据类型

JavaScript 中主要的数据类型包括:

  • 原始类型:String, Number, Boolean, Undefined, Null, Symbol, BigInt
  • 引用类型:Object, Array, Function, Date, 等等
let str = "Hello";
let num = 123;
let isOk = true;
let obj = { name: "Tom" };
let arr = [1, 2, 3];

3. 运算符

  • 算术运算符:+, -, *, /, %
  • 赋值运算符:=, +=, -=, *=, /=
  • 比较运算符:==, ===, !=, !==, >, <
  • 逻辑运算符:&&, ||, !
  • 类型判断:typeof, instanceof

三、流程控制语句

1. 条件判断

if (age > 18) {console.log("成年人");
} else {console.log("未成年");
}

2. switch语句

switch (color) {case "red":console.log("红色");break;default:console.log("其他颜色");
}

3. 循环结构

  • for循环
  • while循环
  • for...in:用于遍历对象属性
  • for...of:用于遍历数组
js
复制编辑
for (let i = 0; i < 5; i++) {console.log(i);
}

四、函数与作用域

1. 函数声明与表达式

function sayHello(name) {return "Hello, " + name;
}const add = function (a, b) {return a + b;
};

2. 箭头函数

const multiply = (x, y) => x * y;

3. 作用域与闭包

  • 全局作用域、函数作用域、块级作用域
  • 闭包是指函数可以“记住”并访问其定义时的作用域。
function outer() {let count = 0;return function () {count++;return count;};
}const counter = outer();
console.log(counter()); // 1
console.log(counter()); // 2

五、对象与数组

1. 对象

let person = {name: "Alice",age: 25,sayHi() {console.log("Hi!");},
};

2. 数组方法

  • push(), pop(), shift(), unshift()
  • forEach(), map(), filter(), reduce()
let numbers = [1, 2, 3];
let doubled = numbers.map(n => n * 2); // [2, 4, 6]

六、DOM操作基础

1. 选中元素

document.getElementById("myId");
document.querySelector(".myClass");
document.querySelectorAll("div");

2. 修改内容与属性

element.textContent = "新内容";
element.setAttribute("href", "https://example.com");

3. 修改样式

element.style.color = "red";

七、事件监听与交互

添加事件监听器:

button.addEventListener("click", function () {alert("按钮被点击了");
});

常见事件类型:

  • click, mouseover, mouseout
  • keydown, keyup, submit, change

八、异步编程与Ajax

1. 定时器

setTimeout(() => {console.log("1秒后执行");
}, 1000);

2. 回调函数

处理异步结果:

function loadData(callback) {setTimeout(() => {callback("数据加载完成");}, 2000);
}

3. Promise

let promise = new Promise((resolve, reject) => {setTimeout(() => resolve("成功"), 1000);
});
promise.then(result => console.log(result));

4. async/await

async function getData() {let data = await fetch("/api/data");let result = await data.json();console.log(result);
}

九、模块化与ES6+

随着前端项目日益复杂,JavaScript模块化成为开发的主流。

// a.js
export const name = "Tom";// b.js
import { name } from "./a.js";

现代JavaScript(ES6+)还引入了诸如解构赋值、模板字符串、展开运算符、类、Promise、箭头函数等新特性,大大提升了开发效率与代码可读性。


十、浏览器API与存储

  • localStorage / sessionStorage:本地数据存储
  • fetch:发送HTTP请求
  • History APILocation API:控制地址栏和跳转

十一、前端框架初识(Vue / React)

虽然不是本文重点,但必须指出的是:现代前端项目大多采用如 Vue.jsReact.js 这样的框架,它们的核心仍是JavaScript。学习这些框架之前,一定要扎实掌握原生JS的基础。


十二、总结一下

JavaScript是网页的灵魂,是前端开发的“中枢神经”。它能让静态网页变得“活”起来,实现复杂交互、数据处理、网络请求等功能。学好JavaScript,意味着你真正迈入了前端开发的核心地带。

学习JavaScript的过程可能会遇到一些“绕脑”的概念,比如闭包、原型链、异步编程等。但只要你持续实践、善于总结,它们终将变得清晰可控。

如果大家觉得本文写得还不错的话,欢迎点赞收藏一下,这是我更新的动力~

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

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

相关文章

LangChain面试内容整理-知识点12:检索器(Retriever)接口与实现

在LangChain中,检索器(Retriever)是一个抽象接口,负责根据用户查询从数据源中检索相关文档。可以把Retriever理解为“搜索工具”:给它一个未经结构化的查询文本(如用户问题),它返回一组与之相关的 Document 对象。内部可以基于向量相似度、数据库查询、甚至网络搜索。 …

LLVM前端和优化层

文章目录 LLVM ArchitectueLLVM 前端Lexical Analysis词法分析Syntactic analysis 语法分析Syntactic Analyze语义分析 LLVM 优化层Pass 基础概念Pass 依赖关系Pass API 总结 LLVM Architectue LLVM 前端 LLVM 的前端其实是把源代码也就是 C、C、Python 这些高级语言变为编译器…

工作流和Agent 的区别与联系

工作流和智能体可能让人混淆的地方就是他们都可能有大模型的加持&#xff0c;都可能有工具的加入供大模型调用&#xff0c;本文做一下对比和联系 工作流 (Workflow) 定义&#xff1a; 工作流是一系列预定义、结构化且可重复的步骤或任务&#xff0c;旨在完成特定的业务目标或解…

leetcode--用StringBulider反转字符串单词的巧妙解法

反转字符串中的单词 这道题理想中的操作方式就是先去除前导和尾随空格&#xff0c;之后设一个尾指针&#xff0c;往前检索&#xff0c;扫到一个单词就把这个单词放到字符串的第一个位置。 很明显&#xff0c;java中我们不能直接对字符串进行修改&#xff0c;而我们想实现一个一…

连锁零售行业智慧能源管理解决方案:精准管控,让每一度电创造价值

在连锁超市、便利店等业态中&#xff0c;门店分布广、用能场景复杂、管理成本高是普遍难题。传统能源管理模式依赖人工抄表与分散管理&#xff0c;存在数据滞后、响应效率低、安全隐患难排查等问题。以某全国几千家门店的连锁便利店为例&#xff0c;其面临的挑战包括&#xff1…

在 PostgreSQL 中实现 `lck`, `special`, `item` 与 `org_id` 或 `user_id` 组合唯一的约束

在 PostgreSQL 中实现 lck, special, item 与 org_id 或 user_id 组合唯一的约束 要实现 lck, special, item 这三个字段必须与 org_id 或 user_id 中的一个&#xff08;但不能同时&#xff09;组合唯一的约束&#xff0c;你需要创建以下约束&#xff1a; 方案1&#xff1a;使…

g++ a.cpp -o a ‘pkg-config --cflags --libs opencv4‘/usr/bin/ld: 找不到 没有那个文件或目录

这个错误表明 pkg-config 命令没有正确执行&#xff0c;导致编译器无法找到 OpenCV 的库文件和头文件路径。pkg-config 是一个工具&#xff0c;用于查询已安装库的编译和链接选项。如果 pkg-config 无法找到 OpenCV 的配置文件&#xff0c;就会导致这个错误。 以下是解决这个问…

定制平板在智能家居中能做些什么?全面解析其核心功能

大家有没有发现&#xff0c;现在智能家居越来越普及了&#xff0c;很多家庭都在逐步升级自己的居住体验。而在这一过程中&#xff0c;一种设备正悄悄地取代我们以前常用的开关面板和手机APP&#xff0c;成为整个家庭智能控制的核心&#xff0c;这就是——定制平板。 它可不是我…

【通俗易懂】Linux 线程调度策略详解

引言&#xff1a;CPU是厨房&#xff0c;调度器是主厨 要真正理解Linux如何处理成千上万个并发任务&#xff0c;不妨把它想象成一个繁忙的专业厨房。这个比喻不仅能让抽象概念变得具体&#xff0c;更能揭示其背后深刻的设计哲学。 厨房 (The Kitchen): 代表整个计算机系统。 厨…

笔记本电脑安装win10哪个版本好_笔记本装win10专业版图文教程

笔记本电脑安装win10哪个版本好&#xff1f;笔记本还是建议安装win10专业版。Win分为多个版本&#xff0c;其中家庭版&#xff08;Home&#xff09;和专业版&#xff08;Pro&#xff09;是用户选择最多的两个版本。win10专业版在功能以及安全性方面有着明显的优势&#xff0c;所…

微服务循环依赖调用引发的血案

问题表现 最近的迭代转测后遇到了一个比较有意思的问题。在测试环境整体运行还算平稳&#xff0c;但是过一段时间之后&#xff0c;就开始有接口超时了&#xff0c;日志中出现非常多的 “java.net.SocketTimeoutException: Read timed out”。试了几次重启大法&#xff0c;每次…

LeetCode - 852. 山脉数组的峰顶索引

题目 852. 山脉数组的峰顶索引 - 力扣&#xff08;LeetCode&#xff09; 思路 使用二分查找来定位峰顶 对于中间元素&#xff0c;比较它与其右侧元素的大小&#xff1a; 如果 arr[mid] < arr[mid1]&#xff0c;说明我们在上坡阶段&#xff0c;峰顶在右侧 如果 arr[mid…

国产ARM/RISCV与OpenHarmony物联网项目(二)网关数据显示

本文需要Web服务器开发基础&#xff0c;可参考下述博文&#xff1a; 物联网网关Web服务器--lighttpd服务器部署与应用测试 物联网网关Web服务器--CGI开发接口 一、数据显示界面与功能设计 1、功能设计说明 程序代码结构如下&#xff0c;调用关系见彩色部分标示。 数据显示界面…

Robyn高性能Web框架系列01:Robyn快速入门

Robyn快速入门 安装 Robyn1、仅安装基础 HTTP 路由功能2、带扩展功能的安装 第一个Robyn程序1、创建Robyn应用2、Say Hello!3、启动Robyn应用 Python世界从来不缺少对于性能的追求&#xff0c;Robyn就是其中之一&#xff0c;它将 Python 的异步功能与 Rust 相结合&#xff0c;在…

微信小程序 -----无限新增删除,同时算出总合算金额。

<view class="refuelMoney-main" style="padding-bottom: 200rpx;"><!-- <view class="add_record">添加加油记录</view> --><view class="refuel-itemTextArea"><text style="width: 35%;&quo…

linux “Permission Denied“解决方案

Linux 编译错误排查 在软件开发过程中&#xff0c;编译错误和版本控制问题是开发者每天都会遇到的挑战。本文将结合实际案例&#xff0c;详细讲解 Linux 环境下常见编译错误的排查方法 权限拒绝错误&#xff08;Permission Denied&#xff09; 当执行脚本或程序时&#xff0…

【慧游鲁博】【15】后台管理系统功能完善:仪表盘、多模态交互日志、简单问答词条管理

文章目录 本次更新多模态交互日志效果涉及代码文件 仪表盘&#xff08;部分&#xff09;效果涉及代码文件 简单问答服务词条管理效果涉及代码文件 本次更新 代码真的太多太多了&#xff0c;不放代码了 多模态交互日志 数据概览与筛选功能 时间范围筛选&#xff1a;提供"…

【力扣 简单 C】21. 合并两个有序链表

目录 题目 解法一&#xff1a;迭代 解法二&#xff1a;递归 题目 解法一&#xff1a;迭代 struct ListNode* merge(struct ListNode* head1, struct ListNode* head2) {struct ListNode* virHead malloc(sizeof(*virHead));struct ListNode* curNode virHead;struct List…

【开源工具】Windows屏幕控制大师:息屏+亮度调节+快捷键一体化解决方案

🖥️ 从零打造Windows屏幕控制大师:息屏+亮度调节+快捷键一体化解决方案 🌈 个人主页:创客白泽 - CSDN博客 🔥 系列专栏:🐍《Python开源项目实战》 💡 热爱不止于代码,热情源自每一个灵感闪现的夜晚。愿以开源之火,点亮前行之路。 🐋 希望大家多多支持,我们一…

pyhton基础【11】函数一

目录 一.函数说明 二.函数介绍 函数简介 作用 函数分类 三.自定义函数 定义函数 调用函数 pass关键字 定义一次执行多次 一.函数说明 Python中的函数是一个重要的编程概念&#xff0c;它允许编程者封装代码块以实现特定的功能。函数的作用和应用场景非常广泛&#xf…