AS3 Code:
import flash.utils.Dictionary;
var num1:Number = Number.NaN;
var num2:Number = Math.sqrt(-1);
var dic:Dictionary = new Dictionary( true );
trace(num1); //NaN
trace(num2); //NaN
dic[num1] = "A";
trace( num1 == num2 ); //false
trace( num1 === num2 ); //false
trace( dic[num1] ); //A
trace( dic[num2] ); //A
Was die Methode des Schlüsselvergleichs betrifft... "Mit der Klasse Dictionary können Sie eine dynamische Sammlung von Eigenschaften erstellen, die strikte Gleichheit (===) für den Schlüsselvergleich verwendet. Wenn ein Objekt als Schlüssel verwendet wird, wird die Identität des Objekts verwendet, um das Objekt nachzuschlagen, und nicht der Wert, der durch den Aufruf von toString() für das Objekt zurückgegeben wird.
Wenn Dictionary strikte Gleichheit verwendet, wie es in der Dokumentation heißt, wie kommt es dann, dass num1 === num2 falsch ist, und dennoch löst dic[num1] denselben Hash-Slot auf wie dic[num2]?