Javascript condition optimization Can the following condition be optimized/simplified ?

if (!this.properties.width || 
    this.properties.width &lt;= 0 || 
    !this.properties.height || 
    this.properties.height &lt;= 0)
  return;


So basically if properties does not have a width or height property or the width or height property is less than or equal to zero then return
I'd simply flip it around:

if( !(this.properties.width &gt; 0 &amp;&amp; this.properties.height &gt; 0) ) {
  return;
}


This will catch null, undefined, NaN, etc., etc.. It will allow numeric strings (provided they can be coerced to a number greater than zero), and of course it'll allow straight-up positive, non-zero numbers.



Update: There's one edge-case I've come across: Arrays. It's some unfortunate JavaScript weirdness to do with type coercion:

[] &gt; 0;     // =&gt; false (so far so good)
[0] &gt; 0;    // =&gt; false (as it should be)
[1] &gt; 0;    // =&gt; true  (what?)
[1, 1] &gt; 0; // =&gt; false (WHAT?)


So an array with just a single numeric element will be treated as a number when comparing.

Well, actually, as far as I can tell, the array is coerced to a string by coercing each element to a string, and joining them with a comma, and the joined string is then compared lexicographically coerced to a number in order to be compared. (Thanks to Robert in the comments for the correction)

[1] + 0;    // =&gt; "10"
[1, 1] + 0; // =&gt; "1,10"
"0" &gt; 0;    // =&gt; false
"1" &gt; 0;    // =&gt; true
"1,1" &gt; 0;  // =&gt; false


I love JavaScript, but sometimes... jeez...