统一沿用【智慧城市】世界观讲JavaScript(对照菜鸟教程js-intro + 2026现代JS)
统一沿用【智慧城市】世界观讲JavaScript(对照菜鸟教程js-intro + 2026现代JS)
回顾设定:浏览器里的智慧小区公示大屏(DOM楼房);HTML=大屏图纸;CSS=大屏装修;JavaScript = 大屏旁边的【现场运维员】
运维员待在浏览器本地,不需要每次都跑去城市数据中心;可以监听市民的操作、修改公示大屏DOM楼房、校验市民填写的表单,也可以呼叫总部API拿数据。
对应菜鸟教程原文:JS是轻量级脚本语言,嵌入HTML,浏览器执行,用来给网页增加交互、读写页面元素、校验输入、响应点击事件。
一、JS整体定位(开篇口述)
HTML画出公示大屏板块,CSS美化大屏;但大屏本身是死的。JS运维员站在大屏旁边,监听市民的动作,随时修改大屏文字、广告牌,校验市民填写的登记表,还可以派人去城市数据中心调取资料。
JS有两个上岗地点:
- 浏览器端(前端JS,我们重点学):智慧小区大屏运维员,操作DOM公示大屏。
- Node.js(后端JS):运维员调到城市数据中心机房,变成机房办事员,和PHP、Go一样处理后台业务。
JS名字里虽然带Java,但两者毫无关系,就像“茉莉花”和“芒果”,名字相似,完全不是一类东西。
二、基础语法(运维员的工具箱)
1. 变量 let / const = 运维员手里的储物收纳盒
let boxName:可更换内容的收纳盒;
const boxId:盒子内容固定,一旦放进去就不能换(固定编号、常量)。
收纳盒可以放不同种类东西:数字、文字、真假标记。JS是动态类型,盒子今天放数字,明天可以换成文字。
let roomNum = 1201; // Number数字:房号
let ownerName = "老王"; // String字符串:文字,必须加引号
let isPay = true; // Boolean布尔:只有true(已缴费)、false(未缴费)
let emptyBox = null; // null:盒子清空,里面什么都没有
let noThing; // undefined:盒子存在,但从来没放任何东西
2. 数组 Array = 一排连续的文件格子(下标从0开始!)
一排档案格子,0号格子是第一项,1号第二项。
let residentList = ["老王","小张","小李"];
residentList[0] 取出老王;.push() 新增住户到末尾。
3. 对象 Object = 住户档案卡(属性+信息,还可以附带操作方法)
一张住户卡片,记录姓名、房号,还附带操作动作。
let resident = {
name:"老王",
room:1201,
sayHi:function(){ alert("你好") }
}
类比:档案卡,
resident.name读取卡片上的姓名。
4. 运算符(运维员做计算、比对)
- 算术:
+ - * / %计算物业费、房屋面积 - 比较
> < ===判断物业费是否到期;===严格比对(推荐,2026现代JS优先用) - 逻辑
&& || !:并且、或者、取反
5. 分支判断 if / switch(运维员根据条件做不同动作)
if(欠费){
大屏提示:请缴费
}else{
大屏:欢迎回家
}
比喻:运维员看登记表,如果欠费,就在公示大屏贴欠费通知;正常就展示欢迎文字。
6. 循环 for / while(重复做一件事)
for:批量打印所有住户名单,循环遍历住户列表,逐个在大屏展示住户信息。
比喻:运维员逐个翻阅住户档案,循环查看所有人缴费状态。
7. 函数 function / 箭头函数(运维员封装一套固定工作流程)
把一套重复工作打包成一个任务指令,需要的时候直接调用。
// 定义任务:弹出提示
function showTip(msg){
alert(msg)
}
showTip("欢迎访问智慧小区");
alert() 就是浏览器自带的内置函数,弹出弹窗提示(菜鸟教程示例);
prompt():弹出输入框,收集市民输入;confirm():确认弹窗。
内置函数:浏览器提前装好的工具,
document.write、console.log都是自带工具。
三、DOM操作:运维员操作公示大屏(核心,对应菜鸟教程)
document = 大屏物业总管。JS运维员指挥总管修改DOM楼房。
document.write("内容"):直接往大屏上写文字、广告牌(教程第一个示例)document.querySelector():找到大屏上某一块广告牌/输入框.innerHTML:读取/修改广告牌里面的文字内容>
故事:运维员找到公示大屏上的通知板块,直接修改上面文字,不用推倒重建整栋DOM楼房。
四、事件 Event(重点!菜鸟教程核心:JS对事件做出反应)
事件 = 市民对大屏做出的动作:点击按钮、输入文字、页面加载、鼠标悬浮。
运维员一直盯着大屏,事件发生,才执行JS代码。
<button onclick="alert('欢迎!')">点我</button>
比喻:大屏上的【查询住户】按钮,市民点击(click事件),触发运维员执行任务:读取输入内容,校验信息,然后修改大屏。
常见事件:
- click 点击
- input 输入框打字
- submit 表单提交(提交登记信息)
表单数据校验(菜鸟教程案例:验证输入)
市民在大屏表单输入手机号、房号,JS运维员在本地先校验:判断是不是数字、内容是否为空。校验不通过,直接弹窗提示,不用把数据送到城市数据中心,节省网络请求。
if(isNaN(inputValue)){
alert("房号必须是数字!")
}
五、异步、网络请求(运维员呼叫城市总部API)
运维员在大屏这边,发送请求到城市数据中心API窗口,拿住户数据,拿到数据之后,更新公示大屏。
就是前面流程里的:前端JS调用RESTful API,拿到JSON数据,局部更新DOM,不刷新整页。
JSON:总部给运维员传递数据的标准档案格式。
六、代码写在哪里(三种方式)
- 行内:直接写在HTML按钮上
onclick(教程示例) <script>标签写在HTML页面内部- 外部
.js文件,单独存放运维员全部指令,通过src引入(大型项目推荐)
七、现代JS 2026新增要点(ES6+,现代教程标准)
- 箭头函数:简写函数任务,更简洁
- 解构:快速取出对象/数组里面的数据
- 可选链
?.:安全读取档案信息,档案不存在不会直接崩溃 - use strict 严格模式:强制规范运维员写代码,减少低级错误
八、控制台 console.log
运维员的工作记录本,在浏览器开发者工具控制台打印日志,调试代码,查看变量内容,排查错误。
✅ 课堂精简口述稿(一口气讲,对照菜鸟教程)
我们继续智慧城市比喻,JavaScript就是智慧小区公示大屏旁边的现场运维员。HTML是大屏图纸,CSS是大屏装修,运维员JS负责监听市民操作,修改大屏DOM楼房。
我们用let、const收纳盒存放数据,收纳盒可以放数字、文字、真假标记、空值;数组是一排连续档案格子,对象是住户档案卡片。
用运算符做计算对比,if和switch根据条件执行不同操作,for循环重复遍历住户名单;函数是打包好的一套固定工作任务,alert、prompt是浏览器自带弹窗工具。
JS运维员通过document物业总管操作DOM公示大屏,读写广告牌文字;事件就是市民操作大屏,比如点击按钮,触发JS执行任务。
表单提交前,JS可以在本地校验市民输入内容,判断输入是否合法,不用发送到远端服务器。
JS还能发起网络请求,调用城市数据中心API接口拿到JSON住户数据,局部更新大屏,不用刷新整个页面。
代码可以直接写在HTML页面script标签,也可以放到独立的js文件;我们用console.log写工作日志调试代码。
JS除了浏览器大屏工作,Node.js版本还可以调到城市机房,做后端办事员。
随堂练习题(配套讲课)
- JS运维员主要工作地点在哪?>
浏览器内的公示大屏旁边,可以直接操作DOM楼房。
- let 和 const收纳盒的区别?>
let盒子内容可以更换;const盒子一旦存入内容不能修改。
- 事件是什么?>
用户的动作,比如点击按钮,触发JS代码执行。
- 表单校验为什么放在JS前端做?>
在本地大屏提前校验,不合格直接提示,减少和远端服务器通信。
黑板文字版简易大纲
JS = 大屏【现场运维员】
├─变量(let/const):收纳盒,存数字、文字、布尔、null、undefined
├─数组[]:一排档案格(下标从0)
├─对象{}:住户档案卡,属性+方法
├─运算符、if判断、for循环
├─函数:打包一套任务;alert弹窗工具
├─DOM:指挥document物业总管修改大屏
├─事件:点击、输入,触发代码执行
├─表单校验:本地检查输入
├─网络请求:调用API,获取JSON,局部更新页面
└─Node.js:运维员调到机房做后端

浙公网安备 33010602011771号