讲师中心 微信公众号
AI工具推荐 视频效率加速

javascript有哪些数据类型_如何进行类型转换【教程】

陌晨同学_2445

陌晨同学_2445

发布时间:2026-01-24 12:35:02

|

363人浏览过

|

来源于php中文网

原创

JavaScript有7种原始类型和object引用类型;判断真实类型应避免typeof,改用Array.isArray()、Object.prototype.toString.call()等;隐式转换易出错,显式转换推荐String()、Number()、Boolean()。

javascript有哪些数据类型_如何进行类型转换【教程】

JavaScript 只有 7 种原始数据类型(string、number、boolean、null、undefined、symbol、bigint),外加一个引用类型 object(含 array、function、Date、RegExp 等)。类型转换不是“教程式操作”,而是由运行时隐式触发或开发者显式调用,关键在理解规则和陷阱。

怎么判断变量的真实类型

别只信 typeof —— 它对 null 返回 "object",对数组、正则、日期都返回 "object",完全不可靠。

更稳妥的方式是:

  • 判断是否为 null:先用 value === null
  • 判断是否为数组:用 Array.isArray(value)(不要用 instanceof Array,跨 iframe 失效)
  • 判断其他内置对象:用 Object.prototype.toString.call(value),它能返回 "[object Array]"、"[object Date]" 等精确标识
  • 基础类型检测可组合:typeof value === "string" && value !== null

隐式转换发生的典型场景和坑

隐式转换不写代码却悄悄执行,最容易出错:

立即学习“Java免费学习笔记(深入)”;

  • == 比较时: 0 == false → true,"0" == false → true,[] == ![] → true(真有这题)
  • + 运算符:任一操作数是字符串,就全部转成字符串拼接;否则尝试转成数字相加 —— 1 + [] → "1",1 + [2] → "12",1 + [2, 3] → "12,3"
  • !value:先转布尔再取反,但空数组 []、空对象 {} 都是 true,只有 ""、0、NaN、null、undefined、false 是 falsy
  • if (value) { ... } 或三元 value ? a : b:同样走 falsy 判断,不是“是否为 null/undefined”

显式转换的推荐写法和避坑点

显式转要选对方法,避免副作用:

  • 转字符串:优先用 String(value) —— 它对 null 返回 "null",undefined 返回 "undefined";value + "" 在 value 是对象时会调用 toString(),可能被重写
  • 转数字:用 Number(value) —— 严格按规范转换(Number(" 123 ") → 123,Number("12.34.5") → NaN);parseInt(value) 和 parseFloat(value) 是解析而非转换,会截断(parseInt("12px") → 12,但 parseInt("0x10") → 16,有进制陷阱)
  • 转布尔:直接用 Boolean(value) 或双重非 !!value —— 两者等价,但 !! 更常见;别用 value == true,这是错误的比较逻辑
  • 对象转基本类型:涉及 [Symbol.toPrimitive]、valueOf()、toString() 的调用顺序,日常开发中极少手动干预,除非你写自定义类

BigInt 和 Symbol 的转换限制

这两个类型不能和 number/string 混合运算,强制转换会报错:

  • BigInt 不能参与 +、-、* 等与普通 number 的运算,必须两边都是 BigInt(如 1n + 2n)
  • Number(bigint) 会抛 RangeError;String(bigint) 可以,但 bigint + "" 会报 TypeError
  • Symbol 无法转成 number 或 string(除了 String(symbol),它返回 "Symbol(description)");Number(symbol)、Boolean(symbol) 都抛 TypeError
  • JSON.stringify() 会忽略 Symbol 键和 BigInt 值,直接丢弃

类型转换真正难的不是记规则,而是意识到「某个值接下来会被怎么用」——比如传给函数参数、塞进 JSON.stringify、放进 Set、用于 switch 分支……不同上下文触发的转换路径完全不同。多用 console.log(typeof x, x) 验证,比背表格管用。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2175

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

3402

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

1136

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

3919

2025.09.10

数据类型有哪几种
数据类型有哪几种

数据类型有整型、浮点型、字符型、字符串型、布尔型、数组、结构体和枚举等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3091

2023.10.31

php数据类型
php数据类型

本专题整合了php数据类型相关内容,阅读专题下面的文章了解更多详细内容。

554

2025.10.31

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

542

2026.02.12

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

6659

2023.08.02

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

60

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebStorm 官方调试文档
WebStorm 官方调试文档

共0课时 | 0人学习

React 教程
React 教程

共58课时 | 12.3万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 6.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn