JavaScript中String()与toString()转换字符串的区别详解

作者:工具松鼠

时间:2026-10-31

浏览:443

本文详细解析JavaScript中String()全局函数与对象toString()方法的差异。重点说明toString()无法处理null和undefined,但支持指定进制转换;而String()可安全转换所有类型包括null/undefined,但不支持进制参数。通过代码示例对比两者在布尔值、空值处理及进制输出上的不同表现,帮助开发者根据需求选择合适的转换方式。

文章目录

String()与toString()的基本差异

在JavaScript中,String()函数与toString()方法均可用于将数据转换为字符串类型,但两者在行为机制上存在显著差异。

首先,toString()方法适用于绝大多数数据类型,但其无法处理null和undefined值,尝试调用会引发错误。

以布尔值false为例进行转换测试。


<script>
  var str = false.toString();
  console.log(str, typeof str);
</script>

执行后返回字符串'false',类型标识为string。

toString()对null和undefined的处理限制

接下来验证null和undefined是否可通过toString()转换。


<blockquote style="margin-right: 0px;" dir="ltr"><pre class="html" name="code"><script>
  var str = null.toString();
  console.log(str, typeof str);
</script>

对null调用toString()时,程序抛出错误。


<script>
  var str = undefined.toString();
  console.log(str, typeof str);
</script>

同样,对undefined调用toString()也会触发错误。

toString()的进制转换功能

值得注意的是,toString()方法接受一个可选参数,用于指定输出的进制格式。

调用.toString(2)可将数值转换为二进制字符串。

调用.toString(8)可将数值转换为八进制字符串。

调用.toString(10)可将数值转换为十进制字符串。

调用.toString(16)可将数值转换为十六进制字符串。

String()对null和undefined的安全转换

其次,String()全局函数具有更强的兼容性,能够将null和undefined安全转换为字符串,但它不支持进制转换参数。

以null为例进行String()转换测试。


<script>
  var str = String(null);
  console.log(str, typeof str);
</script>

执行后返回字符串'null',类型标识为string。

接着测试undefined的转换情况。


<script>
  var str = String(undefined);
  console.log(str, typeof str);
</script>

执行后返回字符串'undefined',类型标识为string。

综上所述,String()与toString()在异常处理和进制支持上各有侧重,开发者应根据具体场景选择合适的方法。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章