https://jsfiddle.net/yww51Lp0/8/

On 2/10/16, 3:22 PM, "Alex Harui" <aha...@adobe.com> wrote:

>
>
>On 2/10/16, 2:47 PM, "Harbs" <harbs.li...@gmail.com> wrote:
>
>>One of the big use cases to use strict equality is with Numbers and
>>Strings when you want to exclude 0 and empty strings.
>
>Sure, but in my testing, checking against null with "==" works just as
>well if the type is known.
> 
>>
>>The reason this came up now is based on my work with E4X.
>>
>>If I’m reading the spec correctly, it differentiates between namespaces
>>with prefixes which are undefined and prefixes which have an empty
>>string. To test whether the prefix string is undefined or an empty
>>string, I need strict equality, and I was not sure as to whether to test
>>for null or undefined.
>
>I think the first issue is the data type.  If you can expect undefined,
>then the type should be "*" if null is a separate allowed value.
>Otherwise I think if you use String and "==" you'll be ok.  Or does that
>not work somewhere?
>
>>
>>I guess I can always initialize the prefix of namespaces as null. (i.e.
>>private var _prefix:String = null;)That will cross-compile correctly.
>>Right?
>
>Yes, it should.
>
>>
>>Actually, I just did some tests with JS and it looks like I’m not totally
>>clear on how JS handles null and undefined in comparisons:
>>var a = "";
>>alert(a==null)//false
>>alert(""==null)//true
>
>I did not get this in JSFiddle.
>
>HTML:
><span id="out" />
>
>JS:
>    var foo;
>               var bar = "0";
>               var baz = 0;
>               var empty = "";
>               
>    var s = "";
>               s += (foo == null) ? "foo == null<br/>" : "foo != null<br/>";
>               s += (bar == null) ? "bar == null<br/>" : "bar != null<br/>";
>               s += (foo === null) ? "foo === null<br/>" : "foo !== null<br/>";
>               s += (bar === null) ? "bar === null<br/>" : "bar !== null<br/>";
>               s += (baz == null) ? "baz == null<br/>" : "baz != null<br/>";
>               s += (baz === null) ? "baz === null<br/>" : "baz !== null<br/>";
>               s += (empty == null) ? "empty == null<br/>" : "empty != 
> null<br/>";
>               s += (empty === null) ? "empty === null<br/>" : "empty !== 
> null<br/>";
>               s += ("" == null) ? "'' == null<br/>" : "'' != null<br/>";
>
>
>               document.getElementById("out").innerHTML = s;
>
>
>
>>
>>var a = "";
>>var b;
>>alert(b==null);//true
>>alert(b==undefined);//true
>>alert(b=="");//false
>>alert(b==a);//false
>
>This is what I would expect.
>
>-Alex
>

Reply via email to