为什么switch块内变量在块外无法访问?无switch表达式如何取默认值
JavaScript 语法规范明确要求 switch 关键字后必须跟随带表达式的括号,空括号的写法本身属于语法错误,没有办法直接跳过表达式校验让空参数的switch正常运行。
如果需要保留switch语句结构,同时强制走default分支拿到默认赋值,只需要给switch传入一个和所有case值都不匹配的表达式即可。因为switch的case匹配采用严格相等规则(===),只要传入的表达式结果和所有case的值都不全等,就会自动进入default分支执行。
修改后的可运行代码示例如下:
let x = "0"; let text; // 建议提前声明变量,避免隐式创建全局变量或严格模式下报错 // 传入和所有case(0、1)都不匹配的undefined,强制走default switch (undefined) { case 0: text = "Off"; break; case 1: text = "On"; break; default: text = "No value found"; } document.getElementById("demo").innerHTML = text;
你也可以根据实际的case值替换传入的表达式,比如你现有case都是数字,传入字符串、布尔值等其他类型的值都可以实现强制走default的效果。
内容的提问来源于stack exchange,提问作者Abhishek Bhattarai
相关产品推荐
相关产品推荐

