Ian
Re: "stop thinking of NULL as a value and think of it as a “has a value been set” flag" - well in JavaScript (which I occasionally dabble in <g>) undefined and null are two different things... undefined has a type of (typeof)... wait for it... wait for it... undefined, while null has a type of object.
Paste this into your browser's console (usually found under "Tools" or "Developer Tools" somewhere) and press <Enter>:
Code:
console.log("Demo:");
console.log("=====");
var foo;
console.log("Here foo is", foo, "while null is", null);
foo = '"A value"';
console.log("Now foo is the string", foo, "but null is still", null);
foo = undefined; // Note: *not* "undefined" in quotes <g>
console.log("And now foo is", foo, "again");
console.log("And foo's type is", typeof(foo), "while null's type is", typeof(null));
undefined is also stupidly named since in general (for variables in functions) it means that they have been defined, but just not assigned to (i.e. what you are calling null) yet.
OTOH, I do actually agree that "has not been assigned to yet" is the right way to think of null. The JavaScript distinction is probably just wrong-headed (give it a break - it was originally written in 10 days! <g>).
Mike