← 编程学习中心
📖

Preparation

8 个课程
1
如何学习编程
2
计算机基础
3
键盘初识与基准键位
4
字母与数字基础
5
Shift键魔法
6
编程符号专精
7
功能键与修饰键
8
键盘学习总结与进阶
📚

Basics

22 个课程
1
什么是编程?
2
Hello World - 你的第一个程序
3
变量基础概念 - 给信息贴标签
4
变量赋值和操作 - 变量的高级用法
5
数据类型基础 - 数字和字符串
6
基础运算符 - 数字运算王国
7
布尔类型与比较运算符 - 程序的判断基础
8
条件判断基础 - 让程序学会做决定
9
变量作用域 - 变量的生存范围
10
条件语句进阶 - 复杂判断与嵌套结构
11
逻辑运算符 - 简化复杂条件判断
12
循环语句 - 程序的重复机器
13
循环进阶 - break、continue与循环控制
14
嵌套循环与作用域
15
循环调试实战技巧
16
循环不变量 - 理解循环的数学规律
17
数组基础 - 数据的收纳盒
18
数组操作方法 - 添加、删除和管理
19
数组高级 - 探索数组的强大功能
20
引用概念 - 变量的不同行为
21
函数基础 - 解决重复代码的秘密武器
22
函数实践与应用 - 巩固基础,实战应用
🚀

Intermediate

11 个课程
1
从控制台到画布 - p5.js初体验
2
图形绘制工具箱 - 基础图形函数
3
让世界多彩 - 颜色系统详解
4
文字的艺术 - 文本绘制与样式
5
球体动起来 - 动画基础入门
6
球体的交互魔法 - 鼠标与条件判断
7
面向对象编程 - Class类与实例
8
球的家族 - 循环与数组应用
9
球的个性 - 函数封装与参数化
10
球的变身 - 形状模式与高级绘制
11
球的世界 - 综合创作项目
🎯

Advanced

6 个课程
1
对象类型
2
对象类型应用
3
自定义类型
4
函数进阶 - 箭头函数与高级编程技巧
5
内置方法 - 字符串与数组的魔法工具
6
Switch语句与字符串模板 - 更优雅的代码表达
← 编程学习中心
📖

Preparation

8 个课程
1
如何学习编程
2
计算机基础
3
键盘初识与基准键位
4
字母与数字基础
5
Shift键魔法
6
编程符号专精
7
功能键与修饰键
8
键盘学习总结与进阶
📚

Basics

22 个课程
1
什么是编程?
2
Hello World - 你的第一个程序
3
变量基础概念 - 给信息贴标签
4
变量赋值和操作 - 变量的高级用法
5
数据类型基础 - 数字和字符串
6
基础运算符 - 数字运算王国
7
布尔类型与比较运算符 - 程序的判断基础
8
条件判断基础 - 让程序学会做决定
9
变量作用域 - 变量的生存范围
10
条件语句进阶 - 复杂判断与嵌套结构
11
逻辑运算符 - 简化复杂条件判断
12
循环语句 - 程序的重复机器
13
循环进阶 - break、continue与循环控制
14
嵌套循环与作用域
15
循环调试实战技巧
16
循环不变量 - 理解循环的数学规律
17
数组基础 - 数据的收纳盒
18
数组操作方法 - 添加、删除和管理
19
数组高级 - 探索数组的强大功能
20
引用概念 - 变量的不同行为
21
函数基础 - 解决重复代码的秘密武器
22
函数实践与应用 - 巩固基础,实战应用
🚀

Intermediate

11 个课程
1
从控制台到画布 - p5.js初体验
2
图形绘制工具箱 - 基础图形函数
3
让世界多彩 - 颜色系统详解
4
文字的艺术 - 文本绘制与样式
5
球体动起来 - 动画基础入门
6
球体的交互魔法 - 鼠标与条件判断
7
面向对象编程 - Class类与实例
8
球的家族 - 循环与数组应用
9
球的个性 - 函数封装与参数化
10
球的变身 - 形状模式与高级绘制
11
球的世界 - 综合创作项目
🎯

Advanced

6 个课程
1
对象类型
2
对象类型应用
3
自定义类型
4
函数进阶 - 箭头函数与高级编程技巧
5
内置方法 - 字符串与数组的魔法工具
6
Switch语句与字符串模板 - 更优雅的代码表达

Switch语句与字符串模板 - 更优雅的代码表达 🎯

概念介绍

今天我们要学习两个让代码更优雅、更简洁的重要工具:

  • Switch语句:处理多个固定选项的条件判断
  • 字符串模板:让字符串处理变得更简单直观

Switch语句简介

什么是Switch语句?

Switch语句就像是餐厅的点菜单:

  • 你有很多菜品选择(不同的选项值)
  • 每个菜品对应不同的价格(不同的处理逻辑)
  • 如果没有想要的菜品,有默认推荐(default分支)
加载代码编辑器...

Switch语句的语法结构

加载代码编辑器...

语法说明:

  • switch:关键字,表示"根据...进行选择"
  • 表达式:要进行比较的值(通常是变量)
  • case:关键字,表示"如果等于这个值"
  • break:关键字,表示"跳出switch语句"
  • default:关键字,表示"默认情况"(类似于else)

Switch vs If-Else If-Else

让我们用同一个例子对比两种写法:

使用 if-else if-else

加载代码编辑器...

使用 switch

加载代码编辑器...

两种方式的对比:

特点if-else if-elseswitch
适用条件可以处理各种复杂条件主要处理精确相等比较
代码可读性当条件很多时比较混乱多选项时代码更清晰
性能需要逐个检查条件通常有更好的性能
灵活性可以使用任意条件表达式只能使用精确匹配

Switch语句的游戏应用

装备系统示例

加载代码编辑器...

游戏难度选择

加载代码编辑器...

++/-- 操作符 - 简化变量更新

在编程中,我们经常需要对变量进行加1或减1的操作。TypeScript 提供了两个简洁的操作符来完成这个任务。

++ 操作符 - 自增1

i++ 就是 i = i + 1 的简化写法:

加载代码编辑器...

-- 操作符 - 自减1

i-- 就是 i = i - 1 的简化写法:

加载代码编辑器...

在循环中使用操作符

操作符在循环中特别有用,可以简化循环变量的更新:

加载代码编辑器...

为什么要有操作符?

  1. 更简洁:i++ 比 i = i + 1 更短
  2. 更常用:在编程中,变量增减1的操作非常频繁
  3. 更专业:这是程序员的标准写法

前缀 vs 后缀的区别

操作符可以放在变量前面(前缀)或后面(后缀):

加载代码编辑器...

学习建议:

  • 初学者:先用 i = i + 1 理解概念,再过渡到 i++
  • 熟练后:使用 i++ 写简洁代码
  • 团队开发:遵循团队的编码规范
  • 避免混淆:在复杂表达式中优先使用 i = i + 1 避免前缀后缀的混淆

特殊基础类型:undefined 和 null

在我们继续学习之前,需要了解两个特殊的基础类型:undefined 和 null。

undefined 类型

undefined 表示"未定义",当一个变量被声明但没有赋值时,它的默认值就是 undefined。

加载代码编辑器...

undefined 的常见场景:

  • 变量声明但未赋值
  • 函数没有返回值
  • 访问对象不存在的属性(后面会学)
  • 数组元素不存在时(后面会学)

null 类型

null 表示"空的值"或"无值",是一个主动设置的空值。

加载代码编辑器...

null 的常见场景:

  • 表示变量应该存在但目前没有值
  • 清空变量内容
  • 表示"无"或"空"的状态

undefined vs null 的区别

特点undefinednull
含义未定义,从未赋值故意设置为空
触发方式系统自动程序员主动设置
类型检查typeof x === "undefined"x === null
常见用途变量未初始化表示"无值"状态
加载代码编辑器...

在字符串模板中处理 undefined 和 null

加载代码编辑器...

在 Switch 语句中处理特殊值

加载代码编辑器...

理解 undefined 和 null 对编写健壮的程序非常重要,它们帮助我们处理各种边界情况和异常状态!

字符串模板(Template Literals)

什么是字符串模板?

字符串模板是JavaScript中创建字符串的新方式,使用反引号(`)而不是普通引号(' 或 ")。

传统字符串拼接

加载代码编辑器...

使用字符串模板

加载代码编辑器...

字符串模板的语法特点

1. 基本语法:使用反引号

加载代码编辑器...

2. 插入变量:使用 ${变量名}

加载代码编辑器...

3. 插入表达式:使用 ${表达式}

加载代码编辑器...

4. 多行字符串:直接换行

加载代码编辑器...

字符串模板的实际应用

游戏状态显示

加载代码编辑器...

游戏事件日志

加载代码编辑器...

物品描述

加载代码编辑器...

综合练习:结合Switch和字符串模板

练习1:角色创建器

加载代码编辑器...

练习2:游戏商店系统

加载代码编辑器...

练习3:状态报告生成器

加载代码编辑器...

总结

今天我们学习了两个重要的编程工具:

Switch语句

  • 适用场景:处理多个固定选项的条件判断
  • 语法简洁:多选项时比if-else if-else更清晰
  • 性能优秀:通常有更好的执行效率
  • 注意事项:记得使用break语句

字符串模板

  • 语法简单:使用反引号(`)
  • 插值方便:$\{变量名\}或$\{表达式\}
  • 多行支持:直接换行,不需要特殊字符
  • 代码更清晰:避免了复杂的字符串拼接

这两个工具结合起来,可以让你的代码既优雅又易读,特别是在处理游戏状态、用户界面文本和配置信息时非常有用!

扩展运算符 (...) - 现代JavaScript的强大工具

什么是扩展运算符?

扩展运算符(Spread Operator) 使用三个点 ... 语法,能够"展开"数组或对象中的所有元素。这是现代JavaScript/TypeScript中非常重要且常用的语法。

数组的扩展运算符应用

1. 数组复制:创建独立副本

加载代码编辑器...

2. 数组合并:连接多个数组

加载代码编辑器...

3. 在数组任意位置添加元素

加载代码编辑器...

对象的扩展运算符应用

1. 对象复制:创建独立副本

加载代码编辑器...

2. 对象部分更新:只修改指定属性

加载代码编辑器...

3. 对象合并:组合多个对象

加载代码编辑器...

4. 动态对象构造:基于变量创建对象

加载代码编辑器...

扩展运算符的优势

1. 语法简洁易读

传统方式 vs 扩展运算符:

加载代码编辑器...

2. 不可变数据更新

扩展运算符总是创建新的数组/对象,符合函数式编程的不可变性原则:

加载代码编辑器...

3. 灵活的位置操作

可以在数组的任意位置插入元素:

加载代码编辑器...

扩展运算符 vs 传统方法的对比

操作传统方法扩展运算符优势
数组复制array.slice()[...array]语法更简洁
数组合并array1.concat(array2)[...array1, ...array2]更直观,可多位置合并
对象复制Object.assign({}, obj){...obj}语法简单,不需要额外方法
对象合并Object.assign(obj1, obj2){...obj1, ...obj2}语法一致,更易记
不可变更新需要手动复制属性{...obj, prop: value}一行代码完成

实际应用场景

1. 游戏状态管理

加载代码编辑器...

2. 配置管理

加载代码编辑器...

3. 购物车管理

加载代码编辑器...

学习建议

  1. 从简单开始:先学会数组复制和合并
  2. 理解不可变性:掌握扩展运算符创建新数据而不是修改原数据
  3. 逐步掌握对象:在熟悉数组扩展后学习对象扩展
  4. 实际应用:在项目中多使用,形成肌肉记忆

扩展运算符是现代JavaScript/TypeScript开发中不可或缺的工具,掌握它将大大提升你的编码效率!

变量命名风格

在编程中,有几种常见的命名风格,了解这些风格有助于写出更专业、更易读的代码。

1. camelCase(驼峰命名法)

  • 特点:第一个单词小写,后面每个单词首字母大写
  • 用途:主要用于变量名和函数名
  • 例子:
    加载代码编辑器...

2. PascalCase(帕斯卡命名法)

  • 特点:每个单词的首字母都大写
  • 用途:主要用于类名和类型名(我们会在后面的课程中学习)
  • 例子:
    加载代码编辑器...

3. snake_case(蛇形命名法)

  • 特点:单词之间用下划线 _ 连接,所有字母小写
  • 用途:在 C/C++、Python 等语言中使用较多,但在 TypeScript 中不推荐用于变量名
  • 例子:
    加载代码编辑器...

推荐的命名规则

对于我们的课程,推荐遵循以下规则:

  1. 使用 camelCase(驼峰命名法)用于变量和函数
  2. 使用英文单词命名变量名
  3. 特殊说明:在我们的课程里面有极个别地方会使用中文变量名,主要是为了方便理解概念

基本命名规则(在变量章节中已详细学习):

  • 只能包含字母、数字、下划线和美元符号
  • 不能以数字开头
  • 不能使用空格
  • 区分大小写

Switch语句中的变量命名最佳实践

在使用 Switch 语句时,好的变量命名能让代码更加清晰:

加载代码编辑器...

练习:修正变量名错误

练习1:修正数字开头的变量名

加载代码编辑器...

提示:变量名不能以数字开头

练习2:修正包含空格的变量名

加载代码编辑器...

提示:变量名不能包含空格

练习3:修正包含连字符的变量名

加载代码编辑器...

提示:变量名不能包含连字符(虽然 snake_case 使用下划线,但连字符在 TypeScript 中是不允许的)

Previous lesson
Previous
内置方法 - 字符串与数组的魔法工具