javascript - 如何在多个 switch 案例中使用用 let 声明的变量名?
问题描述
我正在尝试使用 switch 语句来执行任务。在第一种情况下,我使用 let 声明了一个变量。但是当我尝试在第二种情况下访问它时,它会显示“未捕获的 ReferenceError:t 未定义”
x = "20";
switch (x) {
case '10':
let t = 15;
break;
case '20':
console.log(t);
}
我收到这个错误
未捕获的 ReferenceError:t 未在 :6:21 定义
但是如果我尝试在第二种情况下声明相同的变量,那么
x = "20";
switch (x) {
case '10':
let t = 15;
break;
case '20':
let t = 150;
console.log(t);
}
我得到这个错误
未捕获的 SyntaxError:标识符 't' 已被声明
为什么会这样?如何在不使用 var 且不使用不同名称声明变量的情况下解决此问题。提前致谢。
解决方案
如果您在 case '10' 中声明变量并且您尝试在 case '20' 中访问变量,您将收到该错误,因为您没有在 case '20' 的范围内声明变量。
如果您在不同的情况下多次声明变量,那么编译器将理解您正在尝试多次声明变量;所以,它给了你那个错误。
这是应该的。您在 switch 语句之前声明它。因此,该变量在开关下方的任何情况下都可用。
x = "20";
let t = 0;
switch (x) {
case '10':
t = 15;
break;
case '20':
t = 150;
console.log(t);
}
推荐阅读
- c++ - mutex->__data.__nuers 什么时候可以是 4294967295?
- windows - 使用 powershell 查找 IIS 的 http 响应标头
- reactjs - React Native:登录或注销时如何以编程方式刷新应用程序?
- java - Java + Selenium + Chromedriver 获胜。服务器 2012 R2
- android - Android为用户自定义号码设置自定义铃声
- php - Facebook 如何手动构建登录流程 (PHP) 错误“您的 redirect_uri 与您在 OAuth 对话请求中使用的不同”
- android - 红色或蓝色类别 Android Studio
- wordpress - woocommerce结帐页面字段中的条纹表单问题未显示
- javascript - 在选择元素中设置默认选项并加载数据
- mqtt - MQTT + (protocolbuf / flatbuf) = DDS?