我想检查一个数字在可接受的大小if语句中是否是BigInt
我知道有解决办法
function isBigInt(x) {
try {
return BigInt(x) === x; // dont use == because 7 == 7n but 7 !== 7n
} catch(error) {
return false; // conversion to BigInt failed, surely it is not a BigInt
}
}
字符串
但是我想直接在if语句中实现测试,而不是在函数中。
有人能帮我吗?
5条答案
按热度按时间rjzwgtxy1#
可以使用
typeof
。如果数字是BigInt,则typeof
将是“bigint”。否则,它将是“number”字符串
yhuiod9q2#
如果我很好地理解了你的问题,三元运算符可以帮助你:
字符串
你将在变量“isTernay”中有true或false,这取决于你的数字是否是bigint。
BigInt对象并不严格等于Number,但可以在弱相等的意义上。
型
访问:https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/BigInt了解更多关于BigInt的信息
d6kp6zgx3#
一个简单的解决方案是(假设你只处理数字):
字符串
然后你可以简单地调用
myNum.bigInt
来检查。注意:
3.bigInt
不工作,因为3.
被认为是一个数字,所以你可以这样做:型
或者在变量上使用它
wn9m85ua4#
快速建议:
字符串
处理文本BigInt(如
123n
)和Object Package 的BigInt(Object(123n)
)。这两种形式都是有效的BigInt,但typeof
的结果不同:“bigint”vs“object”。lmvvr0a85#
如果你只想知道这个值是否是一个原生的BigInt,我认为@Rojo的建议是使用
typeof value = 'bigint'
是最好的
但是如果BigInt是由一个自定义类(一个“polyfill”)提供的,那么typeof表达式的计算结果将是
'object'
。但以下方法确实有效:
字符串
(Note:
value instanceof BigInt
不适用于原生BigInt类型)