有什么区别:
(UIApplication.shared.delegate as? AppDelegate)?.saveContext()
和
switch (expression) {
case:
somethings;
break;
}
起初我以为我可以像这样返回一个对象字面值,但事实证明这是一个语法错误。实际上有什么区别?
另一个问题的例子: How to pass switch statement as function argument in Javascript ES6?
答案 0 :(得分:45)
以这种方式使用的大括号建立了自己的块范围,您可以在其中定义本地let
变量或const
常量:
switch (false) {
case true: {
let x = "bar";
console.log(x);
break;
}
case false: {
let x = "baz";
console.log(x);
break;
}
}

示例将在没有嵌套块作用域的情况下抛出,因为在Ecmascript 2015中,不允许在同一作用域内使用具有相同标识符的多个let
/ const
声明。
请注意,switch
语句本身会创建一个块作用域,即您是否使用嵌套块作用域,let
/ const
声明switch
并且#39} ; t泄漏到父范围。
但是,在switch
的上下文中,花括号也是纯粹装饰性的,用于在视觉上突出显示各个case
分支的块。
答案 1 :(得分:2)
您必须使用大括号:
const
/ let
)时
const
/ let
)