meine JS Kenntnisse sind ein bisschen eingerostet, aber folgendes Typingproblem stell mich vor ein Rätsel
<html>
<body>
<script>
// for ( A in [false,true] ) {
for ( A in [0,1] ) {
for ( B in [0,1]) {
document.writeln("isNaN(A) "+isNaN(A));
document.writeln("isNaN(B) "+isNaN(B));
/*
A=Number(A);
B=Number(B);
*/
document.writeln("<br>"+A+"&&"+B+" -> "+ (A && B )+"<br>");
}
}
document.writeln("<hr> ");
for ( A=0;A<=1;A++ ) {
for ( B=0;B<=1;B++ ) {
document.writeln("<br>"+A+"&&"+B+" -> "+ (A && B )+"<br>");
}
}
</script>
</body>
</html>
ergibt sowohl in FF als auch in Opera
isNaN(A) false isNaN(B) false
0&&0 -> 0
isNaN(A) false isNaN(B) false
0&&1 -> 1 <--- HÄ ???
isNaN(A) false isNaN(B) false
1&&0 -> 0
isNaN(A) false isNaN(B) false
1&&1 -> 1
-----------------
0&&0 -> 0
0&&1 -> 0
1&&0 -> 0
1&&1 -> 1
man beachte dass der auskommentierte Code zum expliziten nummifizieren das Problem behebt....ob A und B aus [true,false} oder [0,1] ändert nix.
OK ich hatte die Vermutung das A und B irgendwie Objektreferenzen sind, die komisch numifiziert werden... aber wieso liefert isNaN dann immer false???
Bitte öffnet mir die Augen ...
Gruß
Rolf