首页 > 解决方案 > 为什么函数声明中的常量声明不会引发错误?

问题描述

我正在向 MDN 学习,所以这里有这样的代码,这让我大吃一惊,为什么 line 中的 choice变量在const choice = select.value;这里被用作常量。我相信这.value可能是改变,并且常量在赋值后不能改变......或者重新声明变量会导致错误......每次,我改变选择值,它调用setWeather函数,对吗?那么,那里发生了什么,有人可以解释一下吗?

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 = '';
  }
}

还有来自 MDN 网站的链接https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/conditionals

标签: javascriptfunctionconstantsdeclarationredeclaration

解决方案


查看 const 变量的范围,它的生命只在函数运行时存在,并在函数完成时结束,因此当再次调用函数时,它是一个新变量,它被分配了值。您必须了解变量的范围。


推荐阅读