首页 > 解决方案 > 为什么不能使用 let 声明一个与一个函数参数同名的变量,即使参数 get 设置默认值?

问题描述

在 es2015 中,当您使用默认参数值时,您会创建一个中间范围。所以我想let x在函数体中,在不同的范围内创建一个新变量。但为什么我仍然得到错误?

使用let,我得到错误: 在此处输入图像描述

但是使用 var,我在不同的范围内得到了两个不同的变量。为什么? 在此处输入图像描述

如果没有var声明,结果就会改变。 在此处输入图像描述

由于它们不在同一范围内,let因此声明不应引发错误。

标签: javascript

解决方案


我们可以认为函数内的所有变量都在同一个范围内。在您的示例中,它会给出错误,let因为let/const在同一范围内重新声明会给出错误,但不会在 using 的情况下给出var

我们可以这样mdn说:

“使用重复的变量声明var不会触发错误,即使在严格模式下,变量也不会丢失其值,除非执行另一个赋值。”


推荐阅读