比较未定义/null/NaN与ActionScript中的number
Compare undefined/null/NaN with number in ActionScript
在ActionScript 1和2中,如果您使用>=
或<=
运算符将undefined
, null
或NaN
与任意数字进行比较,结果始终是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标准。
这些bug 还是意图?
谢谢!
由于ActionScript 2只知道一种数字类型,Number,所以比较中的所有非数字元素都强制转换为Number -这将与编写相同:
Number (null) <= n
Number (undefined) <= n
Number (NaN) <= n
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的比较都应该是假的,这在AS 3中已经固定了-但是null
不是一个数字是绝对有意义的,因此isNaN(null)
应该返回true
。
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 可以't让我的if语句处理js中的html表单输入
- 引用对象中的通用值
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 用程序搜索JQuery数据表中的文本
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- 不能从angular2中的子组件指定父组件中的数组
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 需要帮助开始在Actionscript 3的Javascript中使用Google Maps API v3
- ActionScript中的JavaScript警报
- ActionScript到JavaScript的转换,在Flash CC中的HTML画布文档中的鼠标悬停上播放声音
- Regexp用于查找空间和'/'使用actionscript 3的用户输入中的字符
- 我如何在ActionScript中使用ExternalInterface返回一个数组到JavaScript的这个函数
- 比较未定义/null/NaN与ActionScript中的number
- 如何将ActionScript中函数的引用返回给JavaScript
- actionscript 3-as3中的鼠标事件滚动flash和html.有没有办法停止使用javascript
- actionscript 3-chrome中的AS3 javascript回调问题
- 从Javascript调用的ActionScript中的NetStream.pause()出现问题