跳到主要内容

数据类型:数据的"血型"

类型是什么?

你去医院验血,医生会告诉你的血型是 A、B、AB 还是 O。编程语言也会给每个数据贴一个"血型标签",这就是数据类型

为什么要有类型?因为 "3"3 是不一样的东西——一个是文字(字符串),一个是数字。你不能用文字做数学题(虽然有些语言会假装可以……咳咳 JavaScript)。

基本数据类型对照

加载代码编辑器中……

关键区别表

类型PythonJavaScript
整数int42只有 number42
浮点数float3.14也是 number3.14
字符串str"hello"string"hello"
布尔值boolTrue/Falsebooleantrue/false
空值Nonenullundefined 两个

检查类型

两种语言检查类型的方式也不同:

加载代码编辑器中……

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 为什么。

小结

概念PythonJavaScript
数字类型intfloat 分开只有 number
布尔值True / Falsetrue / false
空值Nonenull + undefined
检查类型type() / isinstance()typeof
类型转换严格,必须显式宽松,会隐式转换

一句话总结:Python 像严格的数学老师——类型不对就报错;JS 像热心的同桌——帮你瞎改,有时候改对了,有时候改出大问题 😂