gpt4 book ai didi

javascript - 为什么 switch 语句只有一个底层 block ?

转载 作者:行者123 更新时间:2023-11-30 12:10:57 25 4
gpt4 key购买 nike

我很高兴 JavaScript 有了新的 let statement声明 block 作用域局部变量。但是,在 switch 语句中声明 let 变量时似乎存在类型错误,这将是使用 let 的一个非常有用的场景。

function test(x) { 
'use strict';
switch (x) {
case 0:
let foo;
break;

case 1:
let foo; // TypeError for redeclaration.
break;
}
}

果然,MDN显示这个例子:

You may encounter errors in switch statements because there is only one underlying block.

那么为什么 switch 语句只是一个底层 block ?

最佳答案

基本上归结为开关的工作方式,其语法表示它只有一对 {}

因为您可能会因为错过 break 而从一种情况跌落到另一种情况 - 在这种情况下,您会希望拥有相同的范围。

您可以在案例周围放置一个额外的 {}:

switch(a) {
case 1:{
let a = 1;
}
}

这是大多数具有 block 作用域的 c 语言的情况。

关于javascript - 为什么 switch 语句只有一个底层 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33812076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com