Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

why referencing non-existent property of an object in javascript doesn't return a reference error?

Tags:

javascript

If I try to reference a non-existent variable, I get ReferenceError in JavaScript. Why referencing a non-existent object property returns 'undefined'? Here is some code, provided I'm writing it in a browser:

alert(a); ReferenceError: a is not defined //error is thrown alert({}.a) undefined //no error 
like image 723
Max Koretskyi Avatar asked Oct 11 '13 12:10

Max Koretskyi


1 Answers

That's just how the language works. Its object-based approach is very flexible, and you can dynamically add, update, and remove properties from objects at runtime. Accessing one that is currently not existing should yield undefined instead of raising an exception. This, for example, allows checking for existence and type in a single expression:

if (prop in obj && typeof obj[prop] == "function") obj[prop](); // can be written shorter: if (typeof obj[prop] == "function") obj[prop](); 

You can get the value without using it. Using undefined then will throw in most circumstances.

In contrast, variables are declared statically in their scope. Accessing an undeclared variable is always an error, which legitimates throwing ReferenceErrors.

like image 103
Bergi Avatar answered Sep 23 '22 07:09

Bergi