为什么函数声明中的常量声明不会引发错误?



我正在向 MDN 学习,所以这里有这样的代码,它让我想起为什么const choice = select.value;行中的choice变量在这里用作常量。我相信.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

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

const 声明创建对值的只读引用。这并不意味着它所持有的值是不可变的,只是变量标识符不能重新分配。例如,在内容是对象的情况下,这意味着可以更改对象的内容(例如,其属性((有关更多详细信息,请访问:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const(。

请找到下面的示例,就像"const select"一样,在这里我声明了一个名为"car"的 const 变量,类型对象,并且我能够更改"car"对象的属性"模型":

const car = {type:"Fiat", model:"500", color:"white"};
car.model= "EX60";
console.log(car);

相关内容

最新更新