盘点JavaScript中BigIn函数常见的属性

开发 前端
本文基于JavaScript基础,介绍了 BigInt 函数,常见的属性,通过 BigInt 函数进行数字运算符的比较。布尔运算等等,通过按案例的分析进行详细的讲解。

[[427702]]

大家好,我是进阶学习者。

一、概述

BigInt 是一种特殊的数字类型,它提供了对任意长度整数的支持。

创建 bigint 的方式有两种:在一个整数字面量后面加 n 或者调用 BigInt 函数,该函数从字符串、数字等中生成 bigint。

  1. const bigint = 1234567890123456789012345678901234567890n; 
  2. const sameBigint = BigInt("1234567890123456789012345678901234567890"); 
  3. const bigintFromNumber = BigInt(10); // 与 10n 相同 

二、属性

1. 数学运算符

BigInt 大多数情况下可以像常规数字类型一样使用。

例如:

  1. alert(1n + 2n); // 3 
  2. alert(5n / 2n); // 2 

注:

除法 5/2 的结果向零进行舍入,舍入后得到的结果没有了小数部分。对 bigint 的所有操作,返回的结果也是 bigint。

不可以把 bigint 和常规数字类型混合使用:

  1. alert(1n + 2); // Error: Cannot mix BigInt and other types 

如果有需要,应该显式地转换它们:使用 BigInt() 或者 Number(),像这样:

  1. let bigint = 1n; 
  2. let number = 2; 
  3. // 将 number 转换为 bigint 
  4. alert(bigint + BigInt(number)); // 3 
  5. // 将 bigint 转换为 number 
  6. alert(Number(bigint) + number); // 3 

转换操作始终是静默的,绝不会报错,但是如果 bigint 太大而数字类型无法容纳,则会截断多余的位,因此应该谨慎进行此类转换。

BigInt 不支持一元加法

一元加法运算符 +value,是大家熟知的将 value 转换成数字类型的方法。

为了避免混淆,在 bigint 中不支持一元加法:

  1. let bigint = 1n; 
  2. alert( +bigint ); // error 

应该用 Number() 来将一个 bigint 转换成一个数字类型。

2. 比较运算符

比较运算符,例如 < 和 >,使用它们来对 bigint 和 number 类型的数字进行比较没有问题。

  1. alert( 2n > 1n ); // true 
  2. alert( 2n > 1 ); // true 

注:

由于 number 和 bigint 属于不同类型,它们可能在进行 == 比较时相等,但在进行 ===(严格相等)比较时不相等:

  1. alert( 1 == 1n ); // true 
  2.  
  3. alert( 1 === 1n ); // false 

3. 布尔运算

当在 if 或其他布尔运算中时,bigint 的行为类似于 number。

例:

在 if 中,bigint 0n 为 false,其他值为 true:

  1. if (0n) {   
  2.   // 永远不会执行 

布尔运算符

例如 ||,&& 和其他运算符,处理 bigint 的方式也类似于 number:

  1. alert( 1n || 2 ); // 1(1n 被认为是 true) 
  2. alert( 0n || 2 ); // 2(0n 被认为是 false) 

注:

这个方法建议在写代码时使用 JSBI 替代原生的 bigint。但是 JSBI 在内部像使用 bigint 一样使用 number,并最大程度按照规范进行模拟,所以代码已经是准备好转换成 bigint 的了(bigint-ready)。

对于不支持 bigint 的引擎,可以“按原样”使用此类 JSBI 代码,对于那些支持 bigint 的引擎 — polyfill 会将调用转换为原生的 bigint。

三、总结

本文基于JavaScript基础,介绍了 BigInt 函数,常见的属性,通过 BigInt 函数进行数字运算符的比较。布尔运算等等,通过按案例的分析进行详细的讲解。

欢迎大家积极尝试,有时候看到别人实现起来很简单,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。

代码很简单,希望对你学习有帮助。

本文转载自微信公众号「前端进阶学习交流」,可以通过以下二维码关注。转载本文请联系前端进阶学习交流公众号。

 

责任编辑:武晓燕 来源: 前端进阶学习交流
相关推荐

2021-08-31 10:01:04

JavaScript函数属性

2021-07-16 07:57:35

JavaScriptEval函数

2024-09-03 13:32:11

JavaScriptEval函数

2024-07-11 14:05:28

JavaScript函数

2022-08-24 14:14:58

JavaScript函数

2021-09-08 08:55:45

Javascript 高阶函数前端

2017-02-20 23:05:14

JavaScript

2021-10-09 07:10:31

JavaScript对象Python

2021-07-20 10:26:12

JavaScriptasyncawait

2024-08-13 15:23:37

2021-08-10 09:57:27

JavaScriptPromise 前端

2021-05-08 09:49:07

JavaScript延迟加载

2022-06-27 18:54:54

Python爬虫加密算法

2021-06-15 10:01:27

JavaScript数组遍历Entries

2021-09-14 07:26:25

JavaScript迭代对象

2021-09-03 10:00:00

JavaScript迭代对象

2024-11-14 13:15:22

JavaScript可迭代数组

2022-01-15 10:01:15

Javascript 高阶函数前端

2021-06-18 10:05:14

JavaScript数组遍历

2015-04-08 10:27:43

JavaScript字符串操作函数
点赞
收藏

51CTO技术栈公众号