You might also try a='1', a=1, a=01, a='01', a=0, a='0', a=false, a='', and a=null.
Using a simple scalar integer isn't an example of anything.
Yes it is - it's an example of your explanation being wrong. Here are some more. You claimed:
Double tests to see if two variables have the same value.
However,
a = "1";
b = true;
result = (a == b);
... gives a result of true - when clearly "1" and true are different values - for instance, you'll get different results if you pass them to alert().
You also said:
Triple tests to see if two variables point to the same place in memory -- are actually the same variables.
"Pointing to the same place in memory" and "actually being the same variable" are two entirely different concepts. For example, after:
a = {foo: 1, bar: [1,2,3]};
b = a;
then 'a' and 'b' refer to the same object ("point to the same place in memory", if you like), and a===b will return true. But they're still different variables, because after modifying one of the variables
the other variable will not be affected in any way.
The reason for wanting to use triple-equals is not because "double-equals compares values", it's because double-equals sometimes behaves in a way that's confusing and not very useful. For instance, I'd expect, for any sensible equality operator, that if a==b and b==c, then a==c... but for JavaScript's double-equals, that's not true (put a="", b=[], c="0" - then ""==[], and []=="0", but "" != "0"...)