gpt4 book ai didi

javascript - Javascript 测试用例中的虚假字符 : all breaks

转载 作者:行者123 更新时间:2023-11-30 23:49:16 25 4
gpt4 key购买 nike

我正在使用名为 phpjs 的 JavaScript 库目标是创建模仿 PHP 处理方式的函数。

这是一个特别的函数:http://phpjs.org/functions/is_float:442

我已经编写了几个测试用例,一切都符合预期。然而,当我尝试这样做时,一切都中断了:

document.write(is_float(16.0x00000000));

屏幕上没有真或假,只有空白区域。这是为什么?

当我执行此操作时,在该函数中,它显示 return !!(mixed_var % 1);什么叫双!!为了?我以前从未遇到过这种情况。在源代码中保留一个,对于以下测试用例会得到完全相同的结果。有什么情况我可能会忘记吗?

document.write(is_float(186.31));document.write('<br>');
document.write(is_float("186.31"));document.write('<br>');
document.write(is_float("number"));document.write('<br>');
document.write(is_float("16.0x00000000"));document.write('<br>');
document.write(is_float("16"));document.write('<br>');
document.write(is_float(16));document.write('<br>');
document.write(is_float(0));document.write('<br>');
document.write(is_float("0"));document.write('<br>');
document.write(is_float(0.0));document.write('<br>');
document.write(is_float("0.0"));document.write('<br>');
document.write(is_float("true"));document.write('<br>');
document.write(is_float(true));document.write('<br>');
document.write(is_float("false"));document.write('<br>');
document.write(is_float(false));document.write('<br>');

编辑:关于 0.0 问题,此问题无法修复。检查文档:

//1.0 is simplified to 1 before it can be accessed by the function, this makes
//it different from the PHP implementation. We can't fix this unfortunately.

看来这只是 JavaScript 自己做的事情。程序员对此无法控制。

最佳答案

16.0x00000000 不是 JavaScript 中的有效数字表达式。如果您尝试表达十六进制值,则正确的表示法是 0x16(以 10 为基数的 22),并且不允许使用小数。如果您偶然尝试使用科学记数法来表示值,则正确的记数法是 1.632e2 (163.2)。

!! 是转换为 bool 值的技巧。考虑 !!0,它可以解释为 !(!0)。它首先变为 true,这当然是不准确的,然后返回到 false,这是 0 的正确 bool 表示。

关于javascript - Javascript 测试用例中的虚假字符 : all breaks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1895087/

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