返回

深入理解toString和valueOf,攻克大厂面试必备题

前端

JavaScript 中的 toString() 和 valueOf() 方法是两个经常被混淆的方法。它们都是用于将数据类型转换为字符串,但它们之间存在一些关键区别。

toString() 方法

toString() 方法将数据类型转换为字符串。它适用于所有数据类型,包括原始数据类型和对象。原始数据类型(如字符串、数字和布尔值)被直接转换为字符串,而对象则被转换为 "[object Object]"。

valueOf() 方法

valueOf() 方法将数据类型转换为其原始值。它适用于原始数据类型和对象。原始数据类型被直接转换为其原始值,而对象则被转换为其内部的原始值。例如,如果对象是一个数字,则 valueOf() 方法将返回该数字。

toString() 和 valueOf() 的区别

toString() 方法和 valueOf() 方法之间的主要区别在于 toString() 方法始终返回一个字符串,而 valueOf() 方法返回数据类型的原始值。这对于需要将数据类型转换为字符串或其原始值的情况非常有用。

例如,如果需要将数字转换为字符串以在 HTML 元素中显示,则可以使用 toString() 方法。如果需要将数字转换为其原始值以进行数学计算,则可以使用 valueOf() 方法。

大厂面试必备题

  1. 给定一个数字,如何将其转换为字符串?
const number = 123;
const string = number.toString();
console.log(string); // "123"
  1. 给定一个对象,如何将其转换为字符串?
const object = { name: "John Doe", age: 30 };
const string = object.toString();
console.log(string); // "[object Object]"
  1. 给定一个数字,如何将其转换为其原始值?
const number = new Number(123);
const primitiveValue = number.valueOf();
console.log(primitiveValue); // 123
  1. 给定一个对象,如何将其转换为其内部的原始值?
const object = new Number(123);
const primitiveValue = object.valueOf();
console.log(primitiveValue); // 123
  1. 如何将字符串转换为数字?
const string = "123";
const number = parseInt(string);
console.log(number); // 123
  1. 如何将字符串转换为布尔值?
const string = "true";
const boolean = Boolean(string);
console.log(boolean); // true