一個關於JavaScript中一個很少使用的功能的教程:標記語句

JavaScript有一個相對較為不知名的功能,它允許你對語句進行標記。

我最近在Svelte中看到這個功能的使用,它用於創建反應式聲明,這些聲明在語句中聲明的變量發生變化時重新計算:

$: console.log(variable)

它們還允許使用語句塊,這是JavaScript的另一個特性,它允許你在可以定義語句的地方定義一個塊:

$: {
console.log(variable)
console.log('another thing')
//...
}

這可能看起來很奇怪,但這是正確的JavaScript。這個語句塊被賦予了$ 標記

Svelte編譯器在內部使用這個功能來創建反應式聲明。

我從未在其他地方使用過這個功能,但它的主要用例是在不是最近的循環或switch的語句中跳出。

這裡有一個簡單的例子來解釋我的意思。

在這些點中的任何一個位置調用break,都會跳出switch,以避免運行其他case:

for (let y = 0; y < 3; y++) {
switch (y) {
case 0:
console.log(0)
break
case 1:
console.log(1)
break
case 2:
console.log(2)
break
}
}

這將正確地輸出0 1 2到控制台。

但是,如果我們想在reache到case 1時跳出for循環呢?這是如何做到的:

loop: for (let y = 0; y < 3; y++) {
switch (y) {
case 0:
console.log(0)
break
case 1:
console.log(1)
break loop
case 2:
console.log(2)
break
}
}

這將輸出0 1到控制台。