javascript - 为什么不能使用 let 声明一个与一个函数参数同名的变量,即使参数 get 设置默认值?
问题描述
在 es2015 中,当您使用默认参数值时,您会创建一个中间范围。所以我想let x
在函数体中,在不同的范围内创建一个新变量。但为什么我仍然得到错误?
但是使用 var,我在不同的范围内得到了两个不同的变量。为什么?
由于它们不在同一范围内,let
因此声明不应引发错误。
解决方案
我们可以认为函数内的所有变量都在同一个范围内。在您的示例中,它会给出错误,let
因为let/const
在同一范围内重新声明会给出错误,但不会在 using 的情况下给出var
。
我们可以这样mdn
说:
“使用重复的变量声明
var
不会触发错误,即使在严格模式下,变量也不会丢失其值,除非执行另一个赋值。”
推荐阅读
- python - Django REST Framework 无法发送多个数据
- vue.js - $el 未定义,而 $ref 在 Vuejs 3 中有一个对象
- api - 使用 Voiceflow 连接 Create SMS API - 提示?
- php - 如何覆盖 Magento 2 的 \lib 文件夹中的 PHP 类?
- pandas - groupby 与 str.contains 在不同的列
- c# - MS Graph API C# 框架:回复尾邮件时间为 UTC
- npm - 在 gitlab CI 中,不能使用 npm 安装的包
- sql - PostgreSQL:显示剩余天数
- sql-server - 如何将总计行从 order by 中排除并显示在表 ssms18 的底部
- java - 将麦克风图标添加到 SearchView