JavaScript 数据类型

💡 原文英文,约900词,阅读约需3分钟。
📝

内容提要

JavaScript是弱类型动态语言,变量类型在运行时自动确定且可改变。数据类型分为简单类型(Number、String、Boolean、Undefined、Null,存于栈)和复杂类型(对象,存于堆)。Number包含整数、小数及Infinity、NaN等特殊值;字符串可用length取长度、+拼接;Boolean的true/false与数字相加分别为1和0;未赋值变量为undefined,null为空值。可用typeof检测类型,并支持字符串、数字、布尔值间的转换。

🔎

延伸解读

简单类型与复杂类型的内存差异

文章指出,简单数据类型(Number、String、Boolean、Undefined、Null)存储在栈中,变量直接保存值;而复杂数据类型(如对象)存储在堆中,变量保存的是地址(引用)。这意味着简单类型的赋值是值复制,修改一个变量不会影响另一个;而复杂类型的赋值是引用复制,多个变量可能指向同一个对象,修改会相互影响。理解这一点有助于避免意外的数据修改。

特殊数值与类型检测的注意事项

JavaScript中,Number类型包含Infinity、-Infinity和NaN等特殊值。NaN表示非数值,任何涉及NaN的运算结果都是NaN,且NaN不等于自身。使用isNaN()可以判断变量是否不是数字。typeof运算符可以检测数据类型,但需注意typeof null返回'object',这是历史遗留问题。这些细节在类型判断和数值计算时需要特别留意。

数据类型转换的实用技巧

文章提到,表单和prompt获取的数据默认是字符串,直接相加可能导致字符串拼接而非数值相加。转换为数字时,parseInt会直接丢弃小数部分,而算术运算符(- * /)和一元加号(+)可进行隐式转换,例如+'123'得到数字123。转换为布尔值时,空字符串、0、NaN、null和undefined会转为false,其余为true。掌握这些转换规则能有效处理用户输入。

❓

Q&A

JavaScript 是弱类型语言吗?变量类型可以改变吗?

是的,JavaScript 是弱类型动态语言,变量类型在运行时自动确定,且同一个变量可以用于不同类型,类型可以改变。

JavaScript 的简单数据类型和复杂数据类型在内存中如何存储?

简单数据类型(Number、String、Boolean、Undefined、Null)是值类型,存储在栈中;复杂数据类型(对象)是引用类型,变量存储在栈中保存地址,实际对象实例存储在堆中。

JavaScript 中 Number 类型有哪些特殊值?

Number 类型包含整数、小数,以及三个特殊值:Infinity(正无穷大)、-Infinity(负无穷大)和 NaN(非数字)。

如何检测 JavaScript 变量的数据类型?

可以使用 typeof 运算符检测变量的数据类型,例如 typeof num 返回 'number'。

JavaScript 中如何将字符串转换为数字?

可以使用 parseInt 取整数部分,或使用算术运算符(- * /)进行隐式转换,还可以使用一元加号 + 进行转换,例如 +'123' 得到数字 123。

JavaScript 中哪些值转换为布尔值时是 false?

空或负值转换为 false,包括空字符串 ''、0、NaN、null 和 undefined;其他值都转换为 true。

🏷️

标签

➡️

继续阅读