一個關於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
到控制台。