JavaScript入门 的学习计划(从0到事件)
LEVEL-1 认识 JavaScript 与基础语法
目标:了解 JS 是什么,会写最简单的脚本。
学习内容
- 在HTML中引入JS (
<Script>标签)
- 变量声明(
let、const)
- 数据类型(数字、字符串、布尔值)
- 基础输出方法:
console.log()、alert()、document.write()
练习题
- 分别在控制台和页面内输出:“欢迎学习JavaScript!”
- 声明变量
name、age ,并输出:我的名字是xxx,今年xx岁
- 用
typeof 检查几种数据类型。
LEVEL-2 条件循环与运算符
目标: 理解循环结构和逻辑,了解运算符作用
学习内容
if / else 条件判断;for / while循环
- 算数运算符 (
+,-,*,/)
- 比较运算符 (
==,===,>,<)
- 逻辑运算符 (
&&,||,!)
练习题
-
输入两个数字a和b,输出较大的那个数
-
输入一个数字,判断这个数是奇数还是偶数
-
求1~100累加和
-
输出九九乘法表:
- 拓展题目如下
LEVEL-3 数组
目标: 熟练掌握数组
学习内容
- 创建数组
- 修改数组 (返回原数组和返回新数组)
- 数组转换
- 数组查找
- 遍历数组
- 数组计算
- 静态数组
练习题
- 建立一个数组
[1,2,3,4,5] ,删除开头和结尾,在开头添加0,在末尾添加6,输出修改后的数组 //[0,2,3,4,6]
- 建立一个数组
[1,2,3,4],反转结果并输出 //[4,3,2,1]
- 建立一个数组
[85,92,78,91,88],请分别进行以下操作:用forEach打印每个分数;用map把每个分数+5;用filter找出大于90的分数;用find找出第一个小于95的分数;用some判断是否有分数低于60;用every判断是否所有分数都几个(>=60)
- 分别利用reduce()实现求和,数组扁平化(将多维数组转换成一维数组),求最大值和最小值
LEVEL-4 函数
目标: 会声明函数,理解函数,参数返回值,作用域
学习内容
- 函数的定义方式
- 函数声明:
function add(a, b) {}
- 函数表达式:
const add = function(a, b) {}
- 箭头函数:
const add = (a, b) => a + b
- 函数(形参 vs 实参)
- 默认参数
function f(a = 10) {}
- 返回值
- 有返回值,让函数产出一个结果
- 无返回值(通常是执行某个动作:打印、修改变量等)
- 作用域与闭包概念(闭包初步了解即可)
练习题
- 写一个求和函数
- 写一个判断是否为偶数的函数
- 写一个求数组中最大值的函数
- 写一个函数,计算数组所有元素的总和
- 写一个函数,反转字符串
LEVEL-5 对象
目标: 会创建,访问,遍历对象,理解对象方法和引用类型
学习内容
- 对象的创建方式
1 2 3 4 5
| const person = { name: "PyTs1n9", age: 20, singleStatus: true, };
|
- 访问/修改属性
1 2 3
| person.name person["age"] person.age = 18
|
- 删除属性
- 对象的方法(对象里的函数)
1 2 3 4 5 6
| const dog = { name: "QwQ", bark() { console.log(this.name + " is barking"); } };
|
- 遍历函数
1 2 3 4
| for (let key in person) { console.log(key, person[key]); }
|
- 对象数组(最常见的实际场景)
1 2 3 4
| const users = [ {name: "A", age: 10}, {name: "B", age: 20} ];
|
练习题
- 创建一个对象表示学生
- 属性包含:姓名、年龄、成绩
- 要求:写一个方法
showInfo() 输出自身信息。
- 写一个函数,统计对象属性数量
输入
返回 3
- 创建一个对象数组
例如:
1 2 3 4
| [ {name:"A", age:10}, {name:"B", age:20} ]
|
要求:写一个函数找出 年龄最大的对象
- 给对象添加新属性
写函数:
1
| addProp(obj, key, value)
|
把新属性加进去
- 拓展:合并两个对象
输入:
控制台输出:
LEVEL-6 DOM与事件
作者给自己写晕了,事件的练习题自己也没做@@
目标: 理解DOM,学会查询方法,操作节点的属性和内容,新增和删除节点,理解事件模型,掌握常用事件类型
学习内容
- DOM基础
- 属性:
textContent / innerHTML / innerText
style.color、classList.add/remove/toggle
value
- 查找节点:
document.getElementById
document.querySelector
document.querySelectorAl
- 操作节点:
createElement
appendChild
remove
setAttribute / getAttribute
- 事件基础:
- 事件绑定:
addEventListener()
- 事件对象:
event.target
- 冒泡、捕获
- 阻止默认行为:
event.preventDefault()
纯 JavaScript DOM / 事件练习题
DOM 练习题
以下为伪DOM结构,目的是不写HTML和CSS也能练习DOM
1 2 3 4 5 6 7 8 9 10 11 12 13
| const mockDOM = { id: "root", children: [ { id: "title", textContent: "Hello" }, { id: "list", children: [ { id: "item1", textContent: "A" }, { id: "item2", textContent: "B" } ] } ] };
|
你将通过JS函数操作这个对象结构
- 查找节点,写一个函数
findNodeById(dom, id),返回该节点对象
示例调用:
1
| findNodeById(mockDOM, "item2");
|
- 利用上题的查找函数,修改节点文字,写函数
setText(dom, id, newText),找到节点并修改其 textContent
- 新增节点,写函数
appendNode(dom, parentId, newNode),把新节点加入 parentId 对应的 children 中
例如
1
| appendNode(mockDOM, "list", { id:"item3", textContent:"C" });
|
- 删除节点,写函数
removeNode(dom, id),从 DOM 树中删除该 id 的节点。
事件 练习题
我们用一个“事件系统”模拟浏览器的事件:
1 2 3 4 5 6 7 8 9 10 11 12 13
| const eventSystem = { listeners: {},
addEventListener(id, handler) { if (!this.listeners[id]) this.listeners[id] = []; this.listeners[id].push(handler); },
trigger(id, event) { const handlers = this.listeners[id] || []; handlers.forEach(fn => fn(event)); } };
|
- 绑定事件,给
title 节点绑定一个事件,用 trigger 触发调用,在控制台输出
- 模拟点击列表项,给
list 下所有项绑定一个 "click" 模拟事件,循环注册事件
- 模拟事件冒泡,如果触发子节点 item1 → 自动触发其父节点 list 的事件。
你需要实现:
1 2 3 4
| function triggerWithBubble(dom, id, event) { }
|
- 事件委托
仅给 list 绑定事件:
1 2 3
| eventSystem.addEventListener("list", (event) => { console.log("你点击了哪个子节点?", event.target); });
|
模拟点击 item2 时触发:
1
| triggerWithBubble(mockDOM, "item2", { target:"item2" });
|
要写出冒泡逻辑,使得父节点能收到事件。
LEVEL-7 小项目实战
目标: 用所学写出一个完整交互项目
项目:计数器(Counter)
功能要求:
- 页面上有一个数字、一个“+”按钮、一个“–”按钮
- 点击“+”数字加1,点击“–”数字减1
- 数字不能低于0
提示:
1 2 3
| <button id="minus">-</button> <span id="count">0</span> <button id="plus">+</button>
|
1 2 3 4 5
| let count = 0; document.querySelector('#plus').addEventListener('click', ()=>{ count++; document.querySelector('#count').textContent = count; });
|
LEVEL-8+ 升级项目 + 巩固复习
目标: 独立完成项目
项目:点击按钮实现图片轮播,并实现图片鼠标移开自动播放,鼠标移动到图片停止自动播放
- 输入框输入任务内容,点击“添加”后任务出现在下方
- 每个任务后有“删除”按钮
- 可以动态新增 / 删除任务
学习点:
- DOM 创建与删除节点
- 事件委托
- 数组操作结合页面更新