js转换成Number类型的方法与规则

转换成Number类型的规则

  • Undefined 类型的值转换为 NaN。
  • Null 类型的值转换为 0。
  • Boolean 类型的值,true 转换为 1,false 转换为 0。
  • String 类型的值转换如同使用 Number() 函数进行转换,如果包含非数字值则转换为 NaN,空字符串为 0。
  • Symbol 类型的值不能转换为数字,会报错
  • 对象(包括数组)会首先被转换为相应的基本类型值,如果返回的是非数字的基本类型值,则再遵循以上规则将其强制转换为数字。

为了将值转换为相应的基本类型值,抽象操作 ToPrimitive 会首先(通过内部操作 DefaultValue)检查该值是否有 valueOf()方法。如果返回基本类型值,就使用该值进行强制类型转换。如果没有就使用 toString() 的返回值(如果存在)来进行强制类型转换。
(如果对象没有 valueOf() 方法,或者 valueOf() 返回的是对象,那么会调用 toString() 方法,然后再尝试将返回值转换为数字。)
如果 valueOf() 和 toString() 均不返回基本类型值,会产生 TypeError 错误。

const obj = {
  name: "slx",
};
console.log(Number(obj)); // NaN

const obj1 = {
  valueOf: function () {
    return 42;
  },
  toString: function () {
    return "100";
  },
};
console.log(Number(obj1)); // 输出 42,因为调用了 valueOf() 方法并返回了一个数字

const obj2 = {
  toString: function () {
    return "Hello";
  },
};
console.log(Number(obj2)); // 输出 NaN,因为无法将 "Hello" 转换为数字

转换成Number类型的方法

将一个值转换为数字有几种方法,具体取决于要转换的值的类型和转换的需求:

  1. Number() 函数:最常见的方法是使用内置的 Number() 函数。它可以将大多数值转换为数字,包括字符串、布尔值、日期等。

    Number("123"); // 123
    Number(true);  // 1
    Number(false); // 0
    Number(new Date()); // 返回当前时间的时间戳
    
  2. parseInt() 和 parseFloat() 函数:这两个函数用于将字符串转换为整数或浮点数。

    parseInt("123"); // 123
    parseFloat("3.14"); // 3.14
    
  3. Unary Plus (+) 操作符:将操作数转换为数字。

    +"123"; // 123
    
  4. 使用 Number 对象的 valueOf() 方法:在某些情况下,可以通过调用对象的 valueOf() 方法来获取其原始值,然后再转换为数字。

    Number({ valueOf: function () { return 123; } }); // 123
    
  5. 使用 Math 对象的方法:例如,Math.floor()Math.ceil()Math.round() 等方法可以将数字或其他可转换为数字的值转换为整数。

  6. 隐式类型转换:在一些情况下,JavaScript 会自动将值转换为数字,例如在数学运算中。

    5 * "10"; // 50
    

这些方法可以根据具体的需求和场景选择使用。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 JavaScript 中,显示类型转换和隐式类型转换也是两种不同的类型转换方式。 1. 显示类型转换:在 JavaScript 中,可以使用一些内置函数或操作符来进行显示类型转换。以下是一些常见的显示类型转换操作: - 使用 Number() 函数将值转换为数值类型。 - 使用 String() 函数将值转换为字符串类型。 - 使用 Boolean() 函数将值转换为布尔类型。 - 使用 parseInt() 或 parseFloat() 函数将字符串转换为数值类型。 - 使用 toString() 方法将数值或对象转换为字符串类型。 2. 隐式类型转换:JavaScript 中的隐式类型转换是在表达式计算、赋值操作和比较运算等过程中自动发生的。这些隐式转换是根据 JavaScript 强制类型转换规则和规范进行的。以下是一些常见的隐式类型转换场景: - 字符串和数值之间的加法运算会将数值隐式转换为字符串并进行字符串拼接。 - 比较运算符(如 ==、>、< 等)会进行隐式类型转换来比较不同类型的值。 - 逻辑运算符(如 &&、|| 等)会根据 JavaScript 的真值表进行隐式类型转换来确定结果。 需要注意的是,JavaScript 的隐式类型转换有时可能会导致意外的结果,因此在编写代码时应当注意类型转换规则,避免产生不可预料的行为。同时,在需要明确类型转换的情况下,建议使用显示类型转换来提高代码的可读性和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值