Considering the following scenario:
We need to use some var or function schrodinger
but do not know if it is available.
So we try:
if(schrodinger){ ... }
=> ReferenceError: schrodinger is not defined
We could use..
if( typeof(schrodinger) !== "undefined"){ ... }
=> No error. Stuff does not run
BUT, we could also use..
if( window.schrodinger){ ... }
.. as (apparently) properties become undefined
instead of null
or something?
This last point I do not understand ("Why does window.schrodinger
not throw an error?")
Is there any preference of using typeof(shrodinger)..
over window.schrodinger
?
Doh... I meant if(!window.schrodinger) instead of if(window.schrodinger).
What I meant with this is that
if( typeof(schrodinger) !== "undefined"){ ... }
can be replaced by
if( window.schrodinger !== "undefined"){ ... }
but that is of course is not the same as
if(!window.schrodinger){ ... }
Regarding the reference error: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError
States "A ReferenceError is thrown when trying to dereference a variable that has not been declared."
Which as far as I understand ( http://stackoverflow.com/questions/4955198/what-does-dereferencing-a-pointer-mean ) means that it throws and error when the data can not be found in the memory.
When a property of an object is called it does dynamically create a reference from the property (but not the variable) to a memory location and sets that memory location with undefinded.
So after it is (dynamically) created it can find something in the memory at that location and therefore will not throw a referenceError.