以下代码块成功执行。我想知道除了使用 for 循环之外,这个标签还有什么用途?
<script>
js:
{
alert("x");
}
</script>
:
无论如何,我都知道在javascript中有一些用途。
ternary operator
- 用于评估if
单行中的语句:
var x = "yes" == "yes" ? true : false;
上面这行代码在功能上等价于:
if("yes" == "yes"){
var x = true;
}
else{
var x = false;
}
标记代码块的开头 - 移动到代码块
begin:
for(int i = 0; i < 10; i++){
break begin;
}
对象文字 - 感谢@Ian 的提醒
var someObject= {
item: 'some value',
anotherItem: 2 // Can put any type of variable here
};
这种类型的符号在使用JSON时很常见
这是一个标签声明。您可以将带标签的语句与break
andcontinue
语句的形式一起使用:
outer: for (var i = 0; i < 1000; ++i) {
for (var j = 0; j < 1000; j++) {
if (somethingBad())
break outer;
}
}
能够从内部嵌套循环到外部迭代级别(很少)有用。我认为我从未在数千行代码中使用过它。在原始问题中发布的示例代码中,标签没有明显的用途。
它在 javascript中称为标签[MDN]
myPrettyLabel:
{
alert('testMe');
}
提供带有标识符的语句,您可以使用 break 或 continue 语句引用该标识符。
例如,您可以使用标签来标识循环,然后使用 break 或 continue 语句来指示程序是应该中断循环还是继续执行。
与goto
一般程序相同
避免使用标签,因为标签在 JavaScript 中不是很常用,因为它们使程序更难阅读和理解。尽可能避免使用标签,并且根据具体情况,更喜欢调用函数或抛出错误。
这就是您标记标签的方式,这是一种非常糟糕的做法,它可以实现旧的“goto”,这是在顺序执行中简单跳转到代码
冒号用于添加标签。正如标签的 MDN 文档所解释的:
提供带有标识符的语句,您可以使用 break 或 continue 语句引用该标识符。
例如,您可以使用标签来标识循环,然后使用 break 或 continue 语句来指示程序是应该中断循环还是继续执行。
MDN 也包含一个代码示例:
var i, j;
loop1:
for (i = 0; i < 3; i++) { //The first for statement is labeled "loop1"
loop2:
for (j = 0; j < 3; j++) { //The second for statement is labeled "loop2"
if (i == 1 && j == 1) {
continue loop1;
} else {
console.log("i = " + i + ", j = " + j);
}
}
}
// Output is:
// "i = 0, j = 0"
// "i = 0, j = 1"
// "i = 0, j = 2"
// "i = 1, j = 0"
// "i = 2, j = 0"
// "i = 2, j = 1"
// "i = 2, j = 2"
// Notice how it skips both "i = 1, j = 1" and "i = 1, j = 2"
此外,正如文章所述,这种逻辑通常会使您的代码更难理解,因此您最好重组代码以使用其他类型的流控制(函数等)以避免使用标签。
请注意,此语法可能会令人困惑,因为它也类似于对象语法,例如:
{ js: {1}, ... }