如何在JavaScript中检查一个数字是否是BigInt

yb3bgrhw  于 2024-01-05  发布在  Java
关注(0)|答案(5)|浏览(186)

我想检查一个数字在可接受的大小if语句中是否是BigInt
我知道有解决办法

  1. function isBigInt(x) {
  2. try {
  3. return BigInt(x) === x; // dont use == because 7 == 7n but 7 !== 7n
  4. } catch(error) {
  5. return false; // conversion to BigInt failed, surely it is not a BigInt
  6. }
  7. }

字符串
但是我想直接在if语句中实现测试,而不是在函数中。
有人能帮我吗?

rjzwgtxy

rjzwgtxy1#

可以使用typeof。如果数字是BigInt,则typeof将是“bigint”。否则,它将是“number”

  1. var numbers = [7, BigInt(7), "seven"];
  2. numbers.forEach(num => {
  3. if (typeof num === "bigint") {
  4. console.log("It's a BigInt!");
  5. } else if (typeof num === "number") {
  6. console.log("It's a number!");
  7. } else {
  8. console.log("It's not a number or a BigInt!");
  9. }
  10. });

字符串

yhuiod9q

yhuiod9q2#

如果我很好地理解了你的问题,三元运算符可以帮助你:

  1. ...
  2. const isTernary = BigInt(x) === x ? true : false
  3. ...

字符串
你将在变量“isTernay”中有true或false,这取决于你的数字是否是bigint。
BigInt对象并不严格等于Number,但可以在弱相等的意义上。

  1. 0n === 0
  2. // ↪ false
  3. 0n == 0
  4. // ↪ true


访问:https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/BigInt了解更多关于BigInt的信息

展开查看全部
d6kp6zgx

d6kp6zgx3#

一个简单的解决方案是(假设你只处理数字):

  1. Number.prototype.bigInt = false
  2. BigInt.prototype.bigInt = true

字符串
然后你可以简单地调用myNum.bigInt来检查。
注意:3.bigInt不工作,因为3.被认为是一个数字,所以你可以这样做:

  1. (3).bigInt
  2. 3 .bigInt


或者在变量上使用它

wn9m85ua

wn9m85ua4#

快速建议:

  1. if (BigInt(n) === n.valueOf()) {
  2. // is BigInt
  3. } else {
  4. // not a BigInt
  5. }

字符串
处理文本BigInt(如123n)和Object Package 的BigInt(Object(123n))。这两种形式都是有效的BigInt,但typeof的结果不同:“bigint”vs“object”。

lmvvr0a8

lmvvr0a85#

如果你只想知道这个值是否是一个原生的BigInt,我认为@Rojo的建议是使用
typeof value = 'bigint'
是最好的
但是如果BigInt是由一个自定义类(一个“polyfill”)提供的,那么typeof表达式的计算结果将是'object'
但以下方法确实有效:

  1. value.constructor === BigInt

字符串
(Note:value instanceof BigInt不适用于原生BigInt类型)

相关问题