javascriptfunctionconstantsdeclarationredeclaration

Why constant declaration in function declaration doesn't throw an error?


const select = document.querySelector('select');
const para = document.querySelector('p');

select.addEventListener('change', setWeather);

function setWeather() {
  const choice = select.value;

  if (choice === 'sunny') {
    para.textContent = 'It is nice and sunny outside today. Wear shorts! Go to the beach, or the park, and get an ice cream.';
  } else if (choice === 'rainy') {
    para.textContent = 'Rain is falling outside; take a rain coat and an umbrella, and don\'t stay out for too long.';
  } else if (choice === 'snowing') {
    para.textContent = 'The snow is coming down — it is freezing! Best to stay in with a cup of hot chocolate, or go build a snowman.';
  } else if (choice === 'overcast') {
    para.textContent = 'It isn\'t raining, but the sky is grey and gloomy; it could turn any minute, so take a rain coat just in case.';
  } else {
    para.textContent = '';
  }
}

there's also link from MDN website https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/conditionals


Solution

  • See the scope of const variable, its life only exists when the function runs, and ends when function completes, hence when the function is called again it is a new variable which is getting assigned the value. You have to learn about scope of variables.