第14章 JavaScript核心概念

变量、函数与RGB调色器 | 课型:实习课 | 建议课时:3节

🏠 返回总目录 / 第14章

🎯 学习目标

知识目标

  • 掌握let/const与数据类型
  • 掌握函数定义、参数与返回值
  • 掌握数组、循环、常用内置对象
  • 掌握解构与模板字符串
  • 理解==与===

能力目标

  • 能用变量与函数组织程序逻辑
  • 能独立完成竞赛任务10"RGB滑块"
  • 能用数组与循环处理批量数据

德育目标

  • 培养严谨的类型意识与比较习惯
  • 理解"DRY不重复自己"的工程师信条

教学重点

  • let/const的正确使用
  • 函数的组织与复用
  • 任务10的完整实现

教学难点

  • ==的隐式类型转换陷阱
  • 值类型与引用类型的区别

💻 实例演示1个实例 · 可在线运行

▶ 竞赛任务10:RGB滑块调色器

拖动三个滑块实时混合颜色并显示rgb值——2026纯JS版竞赛真题。

新窗口运行 下载源码

操作步骤

  1. 打开demo1.html,拖动滑块观察颜色实时变化
  2. 把R拉到255、GB拉到0,验证纯红色
  3. 对照JS代码理解解构[...sliders].map的含义
  4. 把addEventListener的"input"改为"change",体验差异
  5. 尝试添加第四个"透明度"滑块(扩展挑战)

效果观察点

  • input事件拖动中实时触发,change松开才触发
  • 模板字符串拼接rgb()文本
  • 初值181/116/157与CSS背景一致——细节得分点
查看核心代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>Task 10 - RGB Mixer</title>
<style>
  * { margin: 0; padding: 0; }
  body { display: flex; justify-content: center; align-items: center; height: 100vh;
         background: #f2f6f8; font-family: Arial, sans-serif; }
  .color { width: 500px; height: 300px; background-color: rgb(181, 116, 157);
           display: flex; justify-content: center; align-items: center;
           font-size: 20px; border-radius: 8px; }
  input { margin: 20px 0; width: 500px; cursor: pointer; display: block; }
</style>
</head>
<body>
  <div class="container">
    <div class="color"><span>rgb(181, 116, 157)</span></div>
    <input type="range" min="0" max="255" value="181" class="range" aria-label="红色">
    <input type="range" min="0" max="255" value="116" class="range" aria-label="绿色">
    <input type="range" min="0" max="255" value="157" class="range" aria-label="蓝色">
  </div>
<script>
  const sliders = document.querySelectorAll('.range');
  const colorBox = document.querySelector('.color');
  const label = document.querySelector('span');
  function updateColor() {
    const [r, g, b] = [...sliders].map(s => s.value);
    const color = `rgb(${r}, ${g}, ${b})`;
    label.textContent = color;
    colorBox.style.backgroundColor = color;
  }
  sliders.forEach(slider => slider.addEventListener('input', updateColor));
</script>
</body>
</html>

📋 实习任务书

任务目标:掌握JS核心语法并完成竞赛任务10

任务内容与评分
任务1:用let/const声明变量并说明选择理由(10分)
任务2:编写带返回值的函数calculateArea(r)(15分)
任务3:用map把数组[1,2,3]变为[2,4,6](15分)
任务4:完成任务10 RGB滑块(40分)
任务5:写出5组==与===的对比结果(20分)

自我评价

📚 课后作业与预习