+(-0x123) -29-6ren">
gpt4 book ai didi

javascript - 为什么 Javascript isNaN 函数将字符串负十六进制值声明为 NaN?

转载 作者:搜寻专家 更新时间:2023-11-01 05:04:20 26 4
gpt4 key购买 nike

给定以下示例:

isNaN("-0x123");    // returns true , meaning is not a number <- Why?
isNaN(-0x123); // returns false, meaning is a number
isNaN("0x123"); // returns false, meaning is a number
parseInt("-0x123"); // returns -291

我的问题:当其他类似输入产生更合理的输出时,为什么 isNaN 将负十六进制字符串声明为 NaN?

谢谢

最佳答案

函数 isNaN() 告诉您一个值是否可以被强制转换为数字,它没有说明是否存在将值转换为数字的函数。

如果您尝试将字符串强制转换为数字,您将看到相同的行为:

> +"-0x123"
NaN
> +(-0x123)
-291
> +"0x123"
291

第一种情况,你有一个字符串不符合 Javascript 的数字规则,因为它不允许在十六进制文字上使用前导 -,第二种情况你有一个计算表达式到一个数字(所以 0x123 取反),第三种情况你有一个字符串确实匹配一个数字的语法。

参见 http://www.ecma-international.org/ecma-262/5.1/#sec-9.3对于确切的描述,但简而言之,字符串数字文字可能是无符号十进制文字,+- 后跟无符号十进制文字,或者它可能是十六进制整数文字(在所有这些情况下,前导和尾随空格都被忽略)。十六进制文字上没有符号选项。

关于javascript - 为什么 Javascript isNaN 函数将字符串负十六进制值声明为 NaN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34391853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com