Home > front end >  Having issues trying to fix this control flow problem
Having issues trying to fix this control flow problem

Time:09-07

I've thought I figured out how basic javascript logic works, but here I must have forgot something.

 let firstElementSavedIndex = 1
 console.log(firstElementSavedIndex)
 firstElementSavedIndex = 0;
 console.log(firstElementSavedIndex)
 if (firstElementSavedIndex !== undefined || firstElementSavedIndex !== 0) firstElementSavedIndex -= 1;
                  
                    
 console.log(firstElementSavedIndex)

The code I created above I wanted to use as a guard to prevent firstElementSavedIndex from decrementing unless firstElementSavedIndex isn't undefined or 0.

However the code above decrements even if firstElementSavedIndex is 0.

I must be missing something basic, but I havent found any solutions so far.

Any help would be appreciated.

-Hendrik

CodePudding user response:

In the if block the expression becomes

0 !== undefined || 0 !== 0
true || 0 !== 0
true

Since you are using or as long something evaluates to true the whole expression will become true hence the code goes inside the if block.

To fix this you need to replace || with && and make the conditional as savedIndex greater than 0.

let firstElementSavedIndex = 1;
console.log(firstElementSavedIndex);
 
firstElementSavedIndex = 0;
console.log(firstElementSavedIndex);

if (firstElementSavedIndex !== undefined && firstElementSavedIndex > 0) {
    firstElementSavedIndex -= 1;
}
console.log(firstElementSavedIndex);

now it becomes

0 !== undefined && 0 > 0
true && 0 > 0
true && false
false
  • Related