Vue中String() 和 .toString()的区别小结

 更新时间:2026年02月13日 10:09:25   作者:半花  
本文主要介绍了Vue中String()和.toString()的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

想了解 String() 全局函数和 .toString() 方法的区别,这是 JavaScript 中常见的类型转换知识点,我会从用法、兼容性、边界场景三个维度帮你讲清楚,新手也能轻松理解。

核心区别总览

表格

特性String() 全局函数.toString() 方法
调用方式函数调用(String(xxx))实例方法调用(xxx.toString())
空值处理可处理 null/undefined(不报错)处理 null/undefined 直接报错
原始值处理直接转换原始值(如数字、布尔)原始值会先装箱为对象,再调用方法
返回结果所有合法输入都返回字符串仅非空值能返回字符串,空值抛错
适用场景不确定值是否为 null/undefined 时确定值为非空原始值 / 对象时

总结

  • 核心差异String() 能安全处理 null/undefined.toString() 会抛错;

  • 结果一致场景:处理非空原始值(数字、布尔、字符串)时,两者返回结果相同;

  • 特殊能力.toString() 支持数字进制转换,String() 无此功能;

  • 开发建议

    • 不确定值是否为空 → 用 String()
    • 确定值非空 + 需进制转换 → 用 .toString()
    • 处理对象 / 数组 → 两者结果一致,任选即可。

具体用法&差异详解

处理null/undefined(最核心区别)

这是两者最关键的差异,也是实际开发中最容易踩坑的点:

// 1. String() 处理 null/undefined → 不报错,返回对应字符串 
console.log(String(null)); // "null" 
console.log(String(undefined)); // "undefined" 

// 2. .toString() 处理 null/undefined → 直接抛 TypeError 
console.log(null.toString()); // Uncaught TypeError: Cannot read properties of null (reading 'toString') 
console.log(undefined.toString());// Uncaught TypeError: Cannot read properties of undefined (reading 'toString')

处理原始值(数字、布尔、字符串)

两者结果一致,但底层逻辑不同:

// 数字 
console.log(String(123)); // "123" 
console.log((123).toString()); // "123" 

// 布尔 
console.log(String(true)); // "true" 
console.log(true.toString()); // "true" 

// 空字符串 
console.log(String('')); // "" 
console.log(''.toString()); // "" 

// 特殊数字(NaN/Infinity) 
console.log(String(NaN)); // "NaN" 
console.log(NaN.toString()); // "NaN"

底层差异:String(123) 直接转换原始数字;(123).toString() 会先把 123 装箱为 Number 对象(new Number(123)),再调用对象的 toString() 方法。

处理对象(数组、普通对象)

  • String() 会调用对象的 toString() 方法(等同于 obj.toString());
  • 普通对象的 toString() 默认返回 "[object Object]",数组的 toString() 会拼接元素:
// 数组 
const arr = [1, 2, 3];
console.log(String(arr)); // "1,2,3" 
console.log(arr.toString()); // "1,2,3" 

// 普通对象 
const obj = { a: 1 };
console.log(String(obj)); // "[object Object]" 
console.log(obj.toString()); // "[object Object]" 

// 自定义对象(重写 toString) 
const customObj = { 
  toString() { 
    return "自定义字符串";
  } 
}; 
console.log(String(customObj)); // "自定义字符串" 
console.log(customObj.toString());// "自定义字符串"

处理空字符串 / 空值的边界场景

// 空字符串 
console.log(String('')); // "" 
console.log(''.toString()); // "" 

// 0/空数组 
console.log(String(0)); // "0" 
console.log((0).toString()); // "0" 
console.log(String([])); // "" 
console.log([].toString()); // ""

实际开发中的选择建议

优先用String()

当你不确定要转换的值是否为 null/undefined 时(比如接口返回值、用户输入、变量可能未初始化),String() 更安全,不会报错。

// 示例:处理接口返回的可能为空的值 
const res = { data: null }; 
const str = String(res.data); // "null"(不报错)

用.toString()的场景

当你明确知道值是非空的原始值 / 对象时(比如数字、数组),可以用 .toString(),语义更清晰。

// 示例:数字转指定进制字符串(toString 支持参数,String 不支持) 
console.log((10).toString(2)); // "1010"(转二进制) 
console.log((10).toString(16)); // "a"(转十六进制)

补充:Number.prototype.toString(radix) 支持传入进制参数(2-36),这是 String() 没有的功能。

到此这篇关于Vue中String() 和 .toString()的区别小结的文章就介绍到这了,更多相关Vue String()  .toString()区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue中非父子组件的通信你了解吗

    vue中非父子组件的通信你了解吗

    这篇文章主要为大家详细介绍了vue中非父子组件通信,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • vue实现图片按比例缩放问题操作

    vue实现图片按比例缩放问题操作

    这篇文章主要介绍了vue实现图片按比例缩放问题操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Vue3+Vite项目依赖更新的完整指南

    Vue3+Vite项目依赖更新的完整指南

    本文介绍了Vue3项目依赖更新的推荐方法,包括使用npm-check-updates或Yarn交互式升级工具,强调需谨慎处理版本兼容性及破坏性变更,建议分步更新并充分测试,确保项目稳定性,需要的朋友可以参考下
    2025-09-09
  • vue使用localStorage保存登录信息 适用于移动端、PC端

    vue使用localStorage保存登录信息 适用于移动端、PC端

    这篇文章主要为大家详细介绍了vue使用localStorage保存登录信息 适用于移动端、PC端,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • vue2使用 element表格展开功能渲染子表格的方式

    vue2使用 element表格展开功能渲染子表格的方式

    这篇文章主要介绍了vue2使用 element表格展开功能渲染子表格的方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • 如何解决el-checkbox选中状态更改问题

    如何解决el-checkbox选中状态更改问题

    这篇文章主要介绍了如何解决el-checkbox选中状态更改问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • 在IDEA中安装vue插件全过程

    在IDEA中安装vue插件全过程

    这篇文章主要介绍了在IDEA中安装vue插件全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • 浅析Proxy如何实现Vue响应式

    浅析Proxy如何实现Vue响应式

    这篇文章主要是来和大家探讨一下,Vue的响应式系统仅仅是一个Proxy吗,本文将围绕此问题探索一下Proxy是如何实现Vue响应式的,感兴趣的小伙伴可以了解一下
    2023-08-08
  • Vue 通过自定义指令回顾v-内置指令(小结)

    Vue 通过自定义指令回顾v-内置指令(小结)

    这篇文章主要介绍了Vue 通过自定义指令回顾v-内置指令(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • vue综合组件间的通信详解

    vue综合组件间的通信详解

    这篇文章主要为大家详细介绍了vue综合组件间的通信,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11

最新评论