yandex
loader

please wait

  • Dipti Singh Mar-13-2019 05:46:01 AM ( 1 week ago )

     

    Why execution failed at first console log despite globally scoped variable exist?

    const message = 'starts with mssg #1'; //Global scope
    
    function scopeTest() {
      console.log('1. test #1: ', message); // <-- why unable to read Global scope here?
    
      const message = 'changed to mssg #2';
      console.log('2. test #2: ', message);
    
      if (true) { //Code block is OK
        const message = 'changed to mssg #3';
        console.log('3. test #3: ', message);
      }
    
      { //Another code block is OK
        const message = 'changed to mssg #4';
        console.log('4. test #4: ', message);
      }
    
      console.log('5. test last: ', message);
    }
    scopeTest();
  • Dilpreet Kaur Mar-13-2019 05:47:31 AM ( 1 week ago )

    Variables in JavaScript are hoisted when declared. This means that even if you declare them later in the code, they will still be accessible in earlier calls: it is like the declaration (not the assignation of the value!) would’ve been written in the first line of the block where you’ve declared it.

    In your code, you have declared your message variable in the body of the function so it is trying to access that one because of hoisting, instead of the one declared in the global scope.

Please login

Similar Discussion

Recommended For You