gpt4 book ai didi

javascript - 将 undefined/null/NaN 与 ActionScript 中的数字进行比较

转载 作者:行者123 更新时间:2023-12-02 19:56:44 24 4
gpt4 key购买 nike

在 ActionScript 1 和 2 中,如果比较 undefined , nullNaN使用 >= 任意数字或<=运算符,结果始终是 true 。测试代码:

var x, n, range = 1000;
for (var i = 0; i < 3; ++i) {
switch (i) {
case 0:
x = undefined;
break;
case 1:
x = null;
break;
case 2:
x = NaN;
break;
}
n = range*Math.random();
trace(x + ' >= ' + n + ': ' + (x >= n));
n = range*Math.random();
trace(x + ' <= ' + n + ': ' + (x <= n));
}

此外,isNaN(null)返回true .

这些与 JavaScript 相悖,并且可能不符合 ECMA 标准。

这些是错误还是意图

谢谢!

最佳答案

由于 ActionScript 2 只知道一种数字类型,即 Number,因此比较中的所有非数字元素都将转换为 Number - 这与编写相同:

Number (null) <= n
Number (undefined) <= n
Number (NaN) <= n

Number ({anything but a number}) 始终返回 NaN,因此您的所有语句实际上仅将随机数与 NaN 进行比较。 ActionScript 文档明确警告 NaN 不可比较,并建议始终使用 isNaN() 来测试它。

但是,如果您确实与 NaN 进行比较,那么在 AS2 中这是一件奇怪的事情:

NaN == Number // returns false
NaN != Number // returns true

这些行为符合预期,但是:

NaN >= Number // returns true
NaN <= Number // returns true

最后:

NaN > Number // returns undefined
NaN < Number // returns undefined

当然,这不是很直观 - 与 NaN 的任何比较都应始终为 false,这已在 AS 3 中修复 - 但 null 不是数字是绝对有意义的,因此isNaN(null) 应该返回true

关于javascript - 将 undefined/null/NaN 与 ActionScript 中的数字进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8517861/

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