Interesting AS3 hash situation. Is it really using strict equality as the documentation says?
        Posted  
        
            by Triynko
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Triynko
        
        
        
        Published on 2010-05-25T17:27:26Z
        Indexed on 
            2010/05/25
            18:41 UTC
        
        
        Read the original article
        Hit count: 304
        
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
Concerning the key comparison method... "The Dictionary class lets you create a dynamic collection of properties, which uses strict equality (===) for key comparison. When an object is used as a key, the object's identity is used to look up the object, and not the value returned from calling toString() on it."
If Dictionary uses strict equality, as the documentation states, then how is it that num1 === num2 is false, and yet dic[num1] resolves to the same hash slot as dic[num2]?
© Stack Overflow or respective owner