第十八天:进入 JavaScript 世界 — 从环境搭建到六大数据类型
蜗牛往上爬 · 前端工业可视化学习笔记 第 18 篇
阶段0 的 HTML/CSS 大屏搭好了,但它是"静态的"——数据是写死的,时间不更新,图表是占位符。从今天开始进入阶段1:用 JavaScript 让大屏真正"活"起来。第一步:搭建环境、认识变量和数据类型。
目录
一、JS 能跑在哪里?
JavaScript 不是"只能跑在浏览器里"的语言。它有三个运行环境:
本周重点用浏览器控制台 + Node.js 学习语法,不需要写 HTML。
二、安装 Node.js
Node.js 是 JS 的"脱离浏览器运行环境",让我们在终端里跑 JS 代码。
访问 https://nodejs.org,下载 LTS 版
安装后打开终端验证:
node --version # v18.x.x 或更高
npm --version # 9.x.x 或更高
三、第一个 JS 程序
浏览器控制台版
打开浏览器,F12 → Console,输入:
console.log("Hello 工业可视化!");
console.log("今天开始学 JavaScript");
// 模拟工业场景
var deviceName = "CNC-001";
var temperature = 65;
console.log("设备", deviceName, "当前温度:", temperature, "°C");
Node.js 文件版
创建 hello.js:
// hello.js —— 第一个 Node.js 程序
console.log("=== 智慧工厂监控系统启动 ===");
console.log("系统时间:", new Date().toLocaleString());
var devices = [
{ name: "CNC-001", temp: 65, status: "运行中" },
{ name: "AGV-002", temp: 42, status: "待机" },
{ name: "ARM-003", temp: 38, status: "运行中" }
];
console.table(devices); // 表格输出
终端运行:
node hello.js
四、console.log 调试全家桶
console.log 不只是 print,它有丰富的调试方法:
// 基础输出
console.log("普通文本");
// 多个值
console.log("设备:", "CNC-001", "温度:", 65);
// 对象输出(可展开)
console.log({ name: "CNC-001", temp: 65, status: "运行中" });
// ⭐ 表格输出——工业场景必备
console.table([
{ name: "CNC-001", temp: 65, status: "运行中" },
{ name: "AGV-002", temp: 42, status: "待机" },
{ name: "ARM-003", temp: 38, status: "运行中" }
]);
// 计时
console.time("计算耗时");
// ... 一些计算 ...
console.timeEnd("计算耗时"); // 输出:计算耗时: 0.123ms
// 警告和错误(红色高亮)
console.warn("⚠ 温度接近阈值");
console.error("❌ 设备离线");
五、变量声明 var
// 声明 + 赋值
var deviceName = "CNC-001";
var temperature = 65;
var isRunning = true;
// 一次声明多个
var name = "CNC-001", temp = 65, status = "运行中";
// 命名规则
// ✅ 合法:字母、数字、下划线、$,不能以数字开头
var device1; // 数字在后
var _private; // 下划线开头
var deviceName; // 驼峰命名(推荐)
// ❌ 非法
// var 1device; // 不能以数字开头
// var my-name; // 不能有连字符
// var var; // 不能是关键字
var是 ES5 的声明方式,第 11 周会学更安全的let/const。先理解变量概念,再升级声明方式。
六、六大数据类型
JS 有 7 种类型(ES6 新增 Symbol),本周学 6 种:
Number(数字)
var count = 100; // 整数
var rate = 0.875; // 浮点数
var temperature = -10; // 负数
var big = 1.2e6; // 科学计数法 = 1200000
// 特殊值
var inf = Infinity; // 无穷大
var nan = NaN; // Not a Number(非数值)
String(字符串)
var single = '单引号';
var double = "双引号";
var name = "CNC-001";
// 转义字符
var path = "C:\\Users\\fK"; // 反斜杠
var multi = "第一行\n第二行"; // 换行
// 字符串拼接
var message = "设备 " + name + " 正在运行";
Boolean(布尔)
var isRunning = true;
var isOffline = false;
undefined 与 null
var x; // 声明未赋值 → undefined
var device = null; // 主动设为空 → null
// 区别:
// undefined = 系统给的(还没定义)
// null = 开发者给的(主动置空)
Object(对象)
// 对象(键值对)
var device = {
name: "CNC-001",
temp: 65,
status: "运行中"
};
// 数组(也是对象)
var list = [1, 2, 3, 4, 5];
七、typeof 运算符
console.log(typeof 65); // "number"
console.log(typeof "hello"); // "string"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof null); // "object" ← JS 历史 bug!
console.log(typeof { a: 1 }); // "object"
console.log(typeof [1, 2, 3]); // "object" ← 数组也是 object
console.log(typeof console.log); // "function"
typeof null === "object"是 JS 最著名的 bug,记住就行。
八、算术与赋值运算符
// 算术运算符
var a = 10, b = 3;
console.log(a + b); // 13 加法
console.log(a - b); // 7 减法
console.log(a * b); // 30 乘法
console.log(a / b); // 3.333... 除法
console.log(a % b); // 1 取余(常用:判断奇偶)
console.log(a ** b); // 1000 指数(ES6)
// 自增自减
var count = 0;
count++; // 1(后置:先返回再自增)
++count; // 2(前置:先自增再返回)
// 赋值运算符
var x = 10;
x += 5; // 15(等价于 x = x + 5)
x -= 3; // 12
x *= 2; // 24
x /= 4; // 6
九、动手练:数据类型 15 题
在控制台或 Node.js 中完成以下练习:
// 1. 声明 name 变量赋值为你的名字
// 2. 声明 age 变量赋值为你的年龄
// 3. 用 typeof 检测 name 和 age 的类型
// 4. 声明 isStudent 并赋值为 true/false
// 5. 计算 100 / 3,观察结果
// 6. 用 % 判断 7 是奇数还是偶数
// 7. 声明变量不赋值,用 typeof 检测
// 8. 声明变量赋值为 null,用 typeof 检测
// 9. 计算 2 的 10 次方
// 10. "设备" + "CNC-001" 的结果?
// 11. count = 5,count++ 后 count 是多少?
// 12. a = 10,a += 5 后 a 是多少?
// 13. 用 console.table 输出设备列表
// 14. Number("123") 和 Number("abc") 的结果?
// 15. "5" + 3 和 "5" - 3 的结果?为什么?
十、总结
🚀 变量和类型是 JS 的"地基"。地基打牢了,明天学条件判断和循环就水到渠成。