JavaScript Number研究01基本介绍_Number()构造函数_isFinite_isInteger_isNaN_isSafeInteger_parseInt_parseFloat

JavaScript Number研究01:基本介绍与常用方法详解

在JavaScript中,Number对象是用于表示和操作数值的核心对象之一。它既可以表示整数,也可以表示浮点数。本文将深入研究Number对象的基本概念,以及常用的构造函数和方法,包括Number()构造函数、isFiniteisIntegerisNaNisSafeIntegerparseIntparseFloat等。

一、Number对象的基本介绍

1. 数值类型

JavaScript中只有一种数字类型,即64位浮点数(遵循IEEE 754标准)。这意味着所有的数字,无论是整数还是小数,都是以浮点数的形式存储。

const intNum = 42;         // 整数
const floatNum = 3.14;     // 浮点数

2. Number对象

Number对象是JavaScript的内置对象,用于包装数字值。可以使用Number对象的属性和方法来处理数值。

const numObj = new Number(42);
console.log(numObj); // [Number: 42]

注意:在绝大多数情况下,直接使用基本数值类型即可,无需显式创建Number对象。

二、Number()构造函数

Number()函数可以用作构造函数,也可以作为普通函数调用。

1. 作为构造函数

当使用new关键字时,Number()会创建一个Number对象的实例。

const numObj = new Number(42);
console.log(typeof numObj); // "object"

2. 作为函数调用

不使用new时,Number()会将其参数转换为数值类型。

const num = Number("42");
console.log(num);          // 42
console.log(typeof num);   // "number"

3. 转换规则

  • 字符串:如果字符串能被解析为数值,则返回相应的数值,否则返回NaN

    Number("42");        // 42
    Number("42abc");     // NaN
    
  • 布尔值true转换为1false转换为0

    Number(true);        // 1
    Number(false);       // 0
    
  • nullundefinednull转换为0undefined转换为NaN

    Number(null);        // 0
    Number(undefined);   // NaN
    

三、Number.isFinite()

Number.isFinite()方法用来判断传入的值是否是一个有限数(即既不是Infinity也不是-Infinity,且类型为number)。

Number.isFinite(42);          // true
Number.isFinite(Infinity);    // false
Number.isFinite(-Infinity);   // false
Number.isFinite(NaN);         // false
Number.isFinite("42");        // false

注意:与全局函数isFinite()不同,Number.isFinite()不会对非数值类型进行隐式转换。

isFinite("42");               // true (字符串被转换为数字42)
Number.isFinite("42");        // false

四、Number.isInteger()

Number.isInteger()方法用于判断传入的数值是否是整数。

Number.isInteger(42);         // true
Number.isInteger(3.14);       // false
Number.isInteger("42");       // false
Number.isInteger(NaN);        // false

注意:仅对类型为number的值有效,且小数部分为0

五、Number.isNaN()

Number.isNaN()方法用于判断传入的值是否是NaN(非数字)。

Number.isNaN(NaN);            // true
Number.isNaN(42);             // false
Number.isNaN("NaN");          // false
Number.isNaN(undefined);      // false

区别于全局函数isNaN()

全局函数isNaN()会对非数值类型进行转换,而Number.isNaN()不会。

isNaN("NaN");                 // true (字符串"NaN"被转换为NaN)
Number.isNaN("NaN");          // false

六、Number.isSafeInteger()

Number.isSafeInteger()方法用于判断传入的值是否是安全整数。

1. 安全整数的概念

JavaScript中的安全整数范围为-(2^53 - 1)2^53 - 1。超过此范围的整数在JavaScript中可能无法精确表示。

const maxSafe = Number.MAX_SAFE_INTEGER; // 9007199254740991
const minSafe = Number.MIN_SAFE_INTEGER; // -9007199254740991

2. 使用示例

Number.isSafeInteger(42);                     // true
Number.isSafeInteger(9007199254740991);       // true
Number.isSafeInteger(9007199254740992);       // false
Number.isSafeInteger(3.14);                   // false
Number.isSafeInteger("42");                   // false

七、parseInt() 和 parseFloat()

1. parseInt()

parseInt()函数用于解析字符串并返回一个整数。

parseInt("42");               // 42
parseInt("42px");             // 42
parseInt("  42  ");           // 42
parseInt("0x2A");             // 42 (十六进制)
parseInt("1010", 2);          // 10 (二进制解析)
parseInt("hello");            // NaN

注意事项:

  • parseInt()会忽略字符串前面的空格。
  • 当遇到非数字字符时,会停止解析。
  • 可以指定进制作为第二个参数。

2. parseFloat()

parseFloat()函数用于解析字符串并返回一个浮点数。

parseFloat("3.14");           // 3.14
parseFloat("3.14abc");        // 3.14
parseFloat("   3.14   ");     // 3.14
parseFloat(".1");             // 0.1
parseFloat("1e3");            // 1000
parseFloat("hello");          // NaN

注意事项:

  • parseInt()类似,parseFloat()会解析到不能解析为数字的字符为止。
  • parseFloat()始终解析十进制数,无法指定进制。

八、总结

  • Number()构造函数:可以将值转换为数值类型,或创建Number对象实例。
  • Number.isFinite():判断一个数值是否为有限数。
  • Number.isInteger():判断一个数值是否为整数。
  • Number.isNaN():判断一个值是否为NaN且类型为number
  • Number.isSafeInteger():判断一个数值是否为安全整数。
  • parseInt():解析字符串并返回整数,支持指定进制。
  • parseFloat():解析字符串并返回浮点数。

进一步阅读:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值