user1801625
user1801625

Reputation: 1223

Check if object exist

I saw many code that began like that

var a=a||{};

Now I know that its check if a exist.

My question is why to check it if its at the first of the code?

I mean the programmer know that a is not exist.

Upvotes: 0

Views: 461

Answers (4)

Bruno
Bruno

Reputation: 5822

Translated into clearer code

var a; // The variable declaration gets brought up because of hoisting

More info on hoisting here

if( a ) {
    a = a; // if a is a truthy value then assign it to itself
} else {
    a = {}; // if a is a falsy value then set the default to an empty object
}

Hope that helps

Upvotes: 1

vvohra87
vvohra87

Reputation: 5664

Basically, javascript can be written in multiple files and within each file you can have multiple declarations and functions defined.

Even if the programmer knows for a given instance if the variable exists or not, there is no way to know if it already exists when this code is called from somewhere else.

This should not happen in well written code (all from one developer / house) but it does happen in projects where the js code is amalgumated from multiple places.

This SO question has a very nice answer about variable scopes in javascript, it should clarify your doubts.

Upvotes: 0

Guffa
Guffa

Reputation: 700342

The programmer should know if the variable exists or not.

It's used to mash different pieces of script together without having to keep track of which part of the script is loaded first. Several scripts will have the same piece of code at the start, so they share the same variable.

For the first script, the variable is declared, and there is no previous value for it, so the {} value is used.

For the following scripts that use it, the var is ignored as the variable is already declared, and the previously set value of the variable is used.

Of course, declaring the same variable in several places has a code smell to it. Preferrably you should keep track of what you are doing so that you only declare it once.

Upvotes: 2

Florian Salihovic
Florian Salihovic

Reputation: 3951

That's a shortcut to fall back on a default value - {} in this case.

Upvotes: 0

Related Questions