正在加载...

类型转换

你已经分清了 null 和 undefined。下一步:有意改变值的类型——数字变文本做标签,文本变数字做运算。这就是类型转换。本课用三个清晰助手:String()、Number()、Boolean()——外加常见的 + 意外。

JavaScript 中的类型转换是什么?

类型转换就是把值从一种类型变成另一种。优先用显式写法:String(42) 得到 "42",Number("7") 得到 7,Boolean(0) 得到 false。若 Number 读不懂文本,结果是 NaN。+ 一侧是字符串时,常常拼接文本而不是相加——记一次日志就记住了。

转换工具表

📊 初学者类型转换

助手 / 思路 示例 结果 / 说明
String(...) String(42) "42"(文本)
Number(...) Number("7") 7(数字)
Boolean(...) Boolean(0) false(falsy 预览)
非数字文本 Number("hello") NaN——typeof 仍是 "number"
空 → 布尔 Boolean("") false
与 + 混用 5 + "2" "52"(拼接,不是 7)

String() — 做成文本

需要标签或消息时,用 String(...) 包住值。数字、布尔、null、undefined 都会变成可显示或拼接的字符串。

String() 转换

javascript
console.log(String(42));
console.log(String(true));
console.log(String(null));
console.log(String(undefined));
console.log(typeof String(42));

Number() — 做成数字

文本要参与运算时,用 Number(...)。纯数字字符串转换干净。非数字文本会变成 NaN。

Number() 转换

javascript
console.log(Number("7"));
console.log(Number("3.5"));
console.log(Number(true));
console.log(Number(false));
console.log(typeof Number("7"));

Number 失败时 — NaN

Number("hello") 是 NaN。记住数字课:typeof NaN 仍是 "number"。把 NaN 当作失败转换,而不是可用数量。

Number 陷阱变成 NaN

javascript
console.log(Number("hello"));
console.log(typeof Number("hello"));
console.log(Number(""));
console.log(Number(null));

Number("") 和 Number(null) 会变成 0——又一个初学者陷阱。要真实数量时,请给清晰的数字字符串。

Boolean() — 从值得到是/否

Boolean(...) 把值变成 true 或 false。0、""、null、undefined、NaN 等空值变成 false。非空字符串和多数数字变成 true。完整的 truthy / falsy 列表在下一课——这里先掌握助手即可。

Boolean() 转换

javascript
console.log(Boolean(1));
console.log(Boolean(0));
console.log(Boolean("hi"));
console.log(Boolean(""));
console.log(Boolean(null));

+ 的意外 — 拼接还是相加

若 + 一侧是字符串,JavaScript 常常拼接文本。要做数学运算时,先用 Number() 转换。

加号可能拼接

javascript
console.log(5 + 2);
console.log(5 + "2");
console.log(Number("5") + Number("2"));
console.log("Score: " + 10);

在页面上显示转换

转换几个值,再用 textContent 写短标签。

转换后的页面标签

html
<!DOCTYPE html>
<html>
<head>
<title>Type conversion — labels</title>
</head>
<body>
<p id="out">…</p>
<script>
let raw = "12";
let asNumber = Number(raw);
let asText = String(asNumber);
let flag = Boolean(asNumber);
document.getElementById("out").textContent =
"raw=" + raw +
" | number=" + asNumber +
" | text=" + asText +
" | flag=" + flag;
</script>
</body>
</html>

段落用三种形式展示同一想法。把 raw 改成 "0" 并刷新:flag 变为 false,数字仍是 0。

自己动手

  1. 打印 String(99)、String(false) 和 typeof String(99)。
  2. 打印 Number("8") 和 Number("8") + 2——应是运算,不是 "82"。
  3. 打印 Number("oops") 及其 typeof(NaN,仍是 "number")。
  4. 打印 Boolean("") 和 Boolean("ok")。
  5. 打印 3 + "4",再用 Number("3") + Number("4") 重写。
  6. 在 HTML 演示里把 raw 设为 "0",刷新并读新的 flag。

常见错误

  • 以为 + 总会相加——有字符串时可能拼接
  • 忽略 Number("hello") 后的 NaN 仍拿去运算
  • 以为本课能代替 truthy / falsy——Boolean() 只是预览
  • 以为 String(null) 是 ""——实际是文本 "null"
  • 结果奇怪时忘记查 typeof

小结

  • 类型转换:有意改变值的类型
  • 优先用 String()、Number()、Boolean() 表达意图
  • 非数字文本 → NaN;typeof NaN 仍是 "number"
  • 带字符串的 + 常拼接——相加前先转换
  • 下一课:truthy 与 falsy——哪些值在条件里像 true 或 false

🧠 测试您的知识

准备开始

测试您的知识

通过这个互动测验挑战自己,看看你对这个主题的理解程度如何

❓
8
问题
🎯
70%
及格要求
♾️
∞
时间
🔄
∞
尝试次数

📝 说明

  • 仔细阅读每个问题
  • 为每个问题选择最佳答案
  • 您可以随时重新参加测验
  • 您的进度将显示在顶部