String() 和 .toString()的区别

String().toString() 都是把值转成字符串的常见方式,但它们在 调用方式、可用性、返回结果 上有明显区别。下面我用通俗的方式帮你彻底讲清楚👇


💡 一句话总结

对比项 String() .toString()
类型 函数(全局函数) 方法(对象实例的方法)
能否处理 null / undefined ✅ 可以 ❌ 报错
调用方式 String(value) value.toString()
返回结果 返回值的字符串形式 返回对象自带的字符串表示
典型用途 更安全地转字符串 已知是对象或数字时调用更简洁

🧩 一、String() 是全局函数

它可以安全地转换任何类型 为字符串,包括 nullundefined

scss 复制代码
String(123)        // '123'
String(true)       // 'true'
String(null)       // 'null'
String(undefined)  // 'undefined'
String({ a: 1 })   // '[object Object]'

📘 内部逻辑(简化版):

  • 如果是 nullundefined → 直接返回 'null' / 'undefined'
  • 否则 → 调用对象的 .toString() 方法

🧱 二、.toString() 是对象的方法

它是定义在大多数对象原型上的方法,比如:

  • Number.prototype.toString()
  • Boolean.prototype.toString()
  • Array.prototype.toString()
  • Object.prototype.toString()

不能对 nullundefined 调用,否则直接报错 ⚠️

scss 复制代码
(123).toString()       // '123'
true.toString()        // 'true'
[1, 2, 3].toString()   // '1,2,3'
({a:1}).toString()     // '[object Object]'

null.toString()        // ❌ TypeError: Cannot read properties of null
undefined.toString()   // ❌ TypeError: Cannot read properties of undefined

🎯 三、什么时候用哪个?

使用场景 推荐方法
不确定值是不是 null/undefined ✅ 用 String(value)(更安全)
明确是数字、布尔值、数组等 ✅ 用 .toString()(更语义化)
想格式化对象内容 JSON.stringify(value) 更合适

⚙️ 举个综合例子:

javascript 复制代码
const values = [123, true, null, undefined, [1,2], {x:1}];

values.forEach(v => {
  console.log('String():', String(v));
  console.log('toString():', v?.toString?.() ?? '❌ 无 toString 方法');
  console.log('---');
});

输出:

yaml 复制代码
String(): 123
toString(): 123
---
String(): true
toString(): true
---
String(): null
toString(): ❌ 无 toString 方法
---
String(): undefined
toString(): ❌ 无 toString 方法
---
String(): 1,2
toString(): 1,2
---
String(): [object Object]
toString(): [object Object]

✅ 总结

项目 String() .toString()
调用方式 函数调用 方法调用
是否安全 安全(支持 null/undefined) 不安全
适合场景 通用转换 明确类型时使用
结果差异 基于类型的默认规则 调用该对象原型链上的方法

相关推荐
QQ1__8115175155 小时前
Spring boot名城小区物业管理系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
前端·vue.js·spring boot
钛态5 小时前
前端微前端架构:大项目的救命稻草还是自找麻烦?
前端·vue·react·web
一粒黑子5 小时前
【实战解析】阿里开源 PageAgent:纯前端 GUI Agent,一行JS让网页支持自然语言操控
前端·javascript·开源
独角鲸网络安全实验室5 小时前
2026微信小程序抓包全解析:从实操落地到合规风控,解锁前端调试新范式
前端·微信小程序·小程序·抓包·系统代理绕过·https证书严格校验·进程隔离
紫微AI5 小时前
前端文本测量成了卡死一切创新的最后瓶颈,pretext实现突破了
前端·人工智能·typescript
GISer_Jing5 小时前
AI前端(From豆包)
前端·aigc·ai编程
IT枫斗者5 小时前
前端部署后如何判断“页面是不是最新”?一套可落地的版本检测方案(适配 Vite/Vue/React/任意 SPA)
前端·javascript·vue.js·react.js·架构·bug
测试修炼手册5 小时前
[测试技术] 深入理解 JSON Web Token (JWT)
前端·json
AI老李5 小时前
2026 年 Web 前端开发的 8 个趋势!
前端
里欧跑得慢5 小时前
15. Web可访问性最佳实践:让每个用户都能平等访问
前端·css·flutter·web