flex-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Justin Mclean <jus...@classsoftware.com>
Subject [FlexJS] more on undefined / non initialised values
Date Sun, 04 Jun 2017 02:27:11 GMT
Hi,

So if you run this code on AS
public var s:String;
public var o:Object;
public var i:int;
public var n:Number;
public var b:Boolean;

public function init():void {
    trace(s);
    trace(o);
    trace(i);
    trace(n);
    trace(b);
}

You get:
null
null
0
NaN
false
null

but on JS you get:
undefined
undefined
0
undefined
undefined
undefined

Now with strings, objects and Arrays you can get issues with === and !== as they are null
on one platform and undefined on an another - as discussed in the other thread.

But the issue is worse with Numbers and Booleans as there are additional concerns. Performance
is also an issue as JS doesn't know what type they are and will be slowed down by implicit
casting.

For example this code will not do as you expect and say b is true when it is not as undefined
!= false.

var b:Boolean;

if (b == false)
{
  trace(“b is false”);
}
else
{
  trace(“b is true”);
}

Luckily isNaN(undefined) returns true, NaN != undefined so that may cause some issues as well.

Thanks,
Justin
Mime
View raw message