Here’s a possible counter-argument to what I just wrote:

undefined can be a functional change to ActionScript code when adding to 
numbers and strings:

var obj:Foo;
trace(1 + undefined); NaN
trace("hello " + undefined); //hello undefined
trace(1 + obj); //1
trace("hello " + obj); //hello null
trace(1 + null); //1
trace("hello " + null); //hello null


However, I'm actually not sure that initializing Numbers is necessary. Leaving 
it as undefined is generally functionally equivalent to NaN:

isNaN(undefined) //true
isNaN(null) //false

But initializing ints to null will generally get the same result as 
initializing them to 0…


> On Jun 24, 2017, at 10:35 PM, Harbs <harbs.li...@gmail.com> wrote:
> 
> I have never seen real world ActionScript code which uses strict equality for 
> null.
> 
> The argument to use strict equality “because of modern js advice” is not a 
> reason to use it in ActionScript. The whole argument is to avoid unexpected 
> type conversions. If you are dealing with typed variables, that is generally 
> not an issue.
> 
> Justin raised a valid argument to initialize Booleans and Numbers. It should 
> not be taken any further than that.
> 
> Harbs
> 
>> On Jun 24, 2017, at 8:04 PM, Josh Tynjala <joshtynj...@gmail.com> wrote:
>> 
>> I'm +1 on changing to null by default on objects and strings. I know this
>> will improve compatibility with real world ActionScript code that expects
>> null. We can include these in the compiler option to default back to
>> undefined, for anyone that prefers that behavior.
>> 
>> - Josh
>> 
>> On Jun 23, 2017 7:45 PM, "Justin Mclean" <jus...@classsoftware.com> wrote:
>> 
>>> Hi,
>>> 
>>>> Your link is actually arguing for use for non-strict equality…
>>> 
>>> I suggest you read the content at the link again [1] perhaps you missed
>>> the humour there.
>>> 
>>> So given you don’t want to use strict equality and inequality how do you
>>> want to handle this? Does everyone agree with that not using them despite
>>> just about all modern JS advice is to use them?
>>> 
>>> There is as alternative that will fix a lot of the performance issues (but
>>> not all) and that is to default Boolean, Numbers, Object and Strings to a
>>> sensible default rather than undefined. I’ve already done the work for
>>> Boolean and Numbers as not initialising these can causes other bugs. Are
>>> you OK for Objects and Strings to default to null as well?
>>> 
>>> Re concerns re increased size it seem the closure compiler handles this
>>> well and there is little or no size difference in the optimised JS
>>> produced. I’ve so far found it to be smaller by a fraction of a %.
>>> 
>>> I’ve also raised a JIRA re performance here. [2]
>>> 
>>> Thanks,
>>> Justin
>>> 
>>> 1. https://herringtondarkholme.github.io/2016/11/05/how-to-
>>> write-copy-paste-friendly-code/
>>> 2. https://issues.apache.org/jira/browse/FLEX-35330
> 

Reply via email to