标记语句
最近在阅读 tsconfig.json 中 compilerOptions.allowUnusedLabels 这个选项时候(如果设置为 true 就会有个警告,默认值是 undefined)
ts
function verifyAge(age: number) {
// Forgot 'return' statement
if (age > 18) {
// Unused label.
verified: true
}
}才想起 JS 可以写label 语法,在 JS 中,label 语法可以用于标记代码块,以便在需要的时候可以通过标签进行跳转或中断代码的执行~
label 的语法形式为 labelName: statement,其中 labelName 是标签的名称,statement 是被标记的语句或代码块。
label 语法的主要用途有两个:
跳转语句
可以使用
break或continue语句结合标签来跳转到特定的代码块。通过在跳转语句中指定标签名称,可以跳转到对应标签所在的代码块。这种跳转通常用于多层循环或嵌套语句中,可以提供更精确的控制流程。jsouterLoop: for (let i = 0; i < 5; i++) { innerLoop: for (let j = 0; j < 5; j++) { if (i === 2 && j === 2) { break outerLoop // 跳出外层循环 } console.log(i, j) } }错误处理
可以在代码块中使用
try...catch语句结合标签来捕获特定的异常,并进行相应的处理。通过在catch语句中指定标签名称,可以捕获特定标签所在的代码块中抛出的异常。jscheckValue: try { if (value < 0) { throw new Error('Invalid value') } console.log('Value is valid') } catch (error) { if (error.message === 'Invalid value') { console.log('Invalid value detected') break checkValue // 跳出错误处理代码块 } throw error // 抛出其他异常 }