で数と不定/ヌル/ NaNの比較、結果は常にtrue
あります。試験コード:は、ActionScriptの1及び2のActionScript
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規格に準拠していない可能性があります。
は、これらのバグまたは意図ていますか?
ありがとうございます!
isNaN(null)は数字ではないのでtrueを返します...これらの他のコーナーケースに気付かなかったが、それらが「違法」であるか、操作の定義されていない結果としてよりよく説明されていることは、 。あなたは== NaNのようないくつかのことをするつもりはないので、isNaN()を使ってそれをテストする必要があります...私の推測では、演算子はASに例外を投げることができないので、 ActionScript内部のエキスパートとは遠く離れています... – Neoraptor
意図的な場合、なぜ '<' or '>'演算子を使用すると結果が 'false'ですか? – ExpExc
'>'または '<'の結果は常に 'undefined'でなければなりません - 私はそれをテストしました。私はあなたが「偽」を得ることができるか少し驚いています。 – weltraumpirat