数据类型:数据的"血型"
类型是什么?
你去医院验血,医生会告诉你的血型是 A、B、AB 还是 O。编程语言也会给每个数据贴一个"血型标签",这就是数据类型。
为什么要有类型?因为 "3" 和 3 是不一样的东西——一个是文字(字符串),一个是数字。你不能用文字做数学题(虽然有些语言会假装可以……咳咳 JavaScript)。
基本数据类型对照
加载代码编辑器中……
关键区别表
| 类型 | Python | JavaScript |
|---|---|---|
| 整数 | int → 42 | 只有 number → 42 |
| 浮点数 | float → 3.14 | 也是 number → 3.14 |
| 字符串 | str → "hello" | string → "hello" |
| 布尔值 | bool → True/False | boolean → true/false |
| 空值 | None | null 和 undefined 两个 |
检查类型
两种语言检查类型的方式也不同:
加载代码编辑器中……
typeof null === "object"是 JavaScript 最著名的 bug,从 1995 年保留至今。它不是 feature,是个真正的 bug,但改了会把太多网站弄坏,所以就这样了……🤷
类型转换
有时候你需要把一种类型转成另一种:
加载代码编辑器中……
JS 的隐式类型转换——"魔法"还是"陷阱"?
JavaScript 有一个让人又爱又恨的特性:隐式类型转换。它会偷偷帮你转换类型,有时候结果出乎意料:
加载代码编辑器中……
问问 AI
试着问 AI:"JavaScript 为什么 '3' + 3 等于 '33' 但 '3' - 3 等于 0?这个设计有什么历史原因吗?"
这是一个经典的 JS 面试题,也是理解 JS 类型系统的关键。
🏋️AI 练习
在下面的代码区域里,试着预测这些表达式的结果,然后运行验证:
"5" + 3→ ?"5" - 3→ ?true + true→ ?null + 1→ ?
先在纸上(或脑子里)想答案,再运行看看。如果猜错了,问 AI 为什么。
小结
| 概念 | Python | JavaScript |
|---|---|---|
| 数字类型 | int 和 float 分开 | 只有 number |
| 布尔值 | True / False | true / false |
| 空值 | None | null + undefined |
| 检查类型 | type() / isinstance() | typeof |
| 类型转换 | 严格,必须显式 | 宽松,会隐式转换 |
一句话总结:Python 像严格的数学老师——类型不对就报错;JS 像热心的同桌——帮你瞎改,有时候改对了,有时候改出大问题 😂