Nasty Javascript

Implied Globals

foo="I'm a global foo."
bar="I'm a global bar."

function xyz() {
  var foo="I'm a local foo"
  bar = "I'm a local bar" // the implied global
}
  

This can make it really hard to see where your variables might be getting modified, for example:

function showextrafoo1() { alert(extrafoo1) };

.. nothing shows, as 'extrafoo1' is undefined

<input type="button" onclick="extrafoo1='yo, yo'" value="create extrafoo1">

If it gets defined in an event handler...

It is now defined globally!

Thus, always use var:

<input type="button" onclick="var extrafoo2='ho ho'" value="create extrafoo2">

extrafoo2 does not materialize in the global scope to create potential havoc...




Return the Boolean equivalent of a value

>>>"hello"
"hello"
>>>!!"hello"
true
>>>""
""
>>>!!""
false