【JavaScript】week7-summary

作者:mario 发布时间: 2026-08-20 阅读量:13 评论数:1

第 7 周总结:JavaScript 环境搭建与语言入门 — 从 HTML/CSS 到 JS 的第一步

蜗牛往上爬 · 前端工业可视化学习笔记 第 7 周总结
本周正式进入阶段1:JavaScript 核心基础。搭好了 Node.js 环境,学会了变量声明、六大数据类型、运算符、类型转换和比较运算。这是 JS 的"地基"——地基打牢了,后续的流程控制、函数、DOM 操作才能顺畅。


目录


一、本周学了什么

天数

主题

核心知识点

产出

Day 1-2

环境搭建

Node.js 安装、浏览器控制台、JS 引入方式、console.log 调试

“Hello 工业可视化” 程序

Day 3-4

变量与数据类型

var 声明、Number/String/Boolean/undefined/null/Object、typeof、运算符

数据类型练习 15 题

Day 5-6

类型转换与比较

显式/隐式转换、== vs ===、Falsy 值、逻辑运算符短路求值

运算符练习 15 题

知识图谱

JS 语言入门
├── 运行环境
│   ├── 浏览器控制台(F12 → Console)
│   ├── Node.js(node xxx.js)
│   └── HTML <script> 标签(内嵌/外链)
│
├── 变量声明
│   ├── var 关键字
│   ├── 命名规则(字母/数字/下划线/$,不数字开头)
│   └── 驼峰命名(deviceName)
│
├── 六大数据类型
│   ├── Number(整数、浮点、Infinity、NaN)
│   ├── String(单引号、双引号、转义、拼接)
│   ├── Boolean(true / false)
│   ├── undefined(声明未赋值)
│   ├── null(主动置空)
│   └── Object(对象、数组)
│
├── typeof 运算符
│   ├── 检测基本类型
│   └── 注意:typeof null === "object"(bug)
│
├── 运算符
│   ├── 算术:+ - * / % **
│   ├── 赋值:+= -= *= /= %=
│   └── 自增自减:++ --
│
├── 类型转换
│   ├── 显式:Number() / String() / Boolean() / parseInt() / parseFloat()
│   ├── 隐式:+ 优先拼接,-*/ 优先转数字
│   └── 6 个 Falsy 值:false / 0 / "" / null / undefined / NaN
│
└── 比较与逻辑
    ├── ==(宽松相等,会类型转换)→ 不推荐
    ├── ===(严格相等,不转换)→ 推荐
    ├── > < >= <= != !==
    └── && || !(短路求值)

二、核心知识速记

铁律三条

  1. 永远用 ===,不用 == — 避免隐式类型转换的坑

  2. 显式转换代替隐式转换 — 用 Number() 而不是 + 转数字

  3. 记住 6 个 Falsyfalse / 0 / "" / null / undefined / NaN

容易混淆的点

混淆项

真相

typeof null

"object"(JS 历史 bug,不是真的 object)

typeof NaN

"number"(NaN 虽然叫"非数值",但类型是 number)

NaN === NaN

false(NaN 不等于任何值,用 isNaN() 判断)

"5" + 3

"53"(字符串拼接)

"5" - 3

2(算术运算,转数字)

Boolean(" ")

true(空格不是空字符串)

Boolean([])

true(空数组也是 truthy)

在工业可视化里的应用场景

知识点

应用场景

console.table()

调试时输出设备列表、传感器数据

typeof

检查从 API 获取的数据类型是否符合预期

Number() 转换

把用户输入的字符串转为数字(如温度值)

Boolean() 转换

判断设备是否在线(非空字符串 → true)

=== 严格相等

比较设备状态(“运行中” === status)

|| 默认值

设备名称为空时显示"未知设备"

&& 安全访问

避免访问不存在的属性时报错


三、本周踩过的坑

坑点 1:+ 的二义性

// ❌ 以为会做加法,实际是拼接
var result = "温度:" + 65;  // "温度:65"(拼接,符合预期)
var result2 = "5" + 3;       // "53"(拼接,可能不是你想要的结果)

// ✅ 如果要做数字加法,先转换
var result3 = Number("5") + 3;  // 8

坑点 2:== 的意外结果

// ❌ 这些结果可能出乎意料
console.log(0 == "");        // true
console.log(false == "0");  // true
console.log([] == 0);       // true

// ✅ 用 === 就不会有这些问题
console.log(0 === "");       // false
console.log(false === "0");  // false
console.log([] === 0);       // false

坑点 3:typeof null 的陷阱

// ❌ 用 typeof 判断 null 会得到 "object"
var device = null;
if (typeof device === "object") {
  console.log("这是对象");  // 会执行!但 device 是 null
}

// ✅ 直接用 === null 判断
if (device === null) {
  console.log("设备为空");
}

坑点 4:NaN 比较

// ❌ NaN 不等于任何值
console.log(NaN === NaN);  // false

// ✅ 用 isNaN() 判断
console.log(isNaN(NaN));       // true
console.log(Number.isNaN(NaN)); // true(ES6,更严格)

四、自测清单

完成本周后,你应该能回答:

  • JS 可以在哪三种环境中运行?

  • console.log / console.table / console.warn / console.error 的区别?

  • 如何用 var 声明变量?命名规则是什么?

  • JS 有哪六大数据类型?各自的示例是什么?

  • typeof 用来做什么?typeof null 的结果是什么?

  • undefinednull 的区别是什么?

  • 算术运算符有哪些?%** 分别是什么?

  • Number("123")Number("abc")Number("") 的结果?

  • parseInt("123abc")parseFloat("3.14.15") 的结果?

  • 6 个 Falsy 值是什么?Boolean(" ") 的结果?

  • ===== 的区别?为什么推荐用 ===

  • &&|| 的短路求值是什么意思?

  • NaN === NaN 的结果?如何正确判断 NaN?


五、下周预告

第 8 周:流程控制与函数

天数

主题

Day 1-2

条件判断(if/else/switch)与循环(for/while/do while)

Day 3-4

函数基础(声明、参数、返回值、作用域)

Day 5-6

闭包与 this(闭包概念、this 指向、IIFE)

下周将进入"让程序有逻辑"的阶段——用条件判断做分支,用循环做重复,用函数封装逻辑。学完下周,你就能写出有实际功能的 JS 程序了。


🚀 第 7 周完成!JS 的大门已经打开,下周开始写真正的逻辑代码。

评论