以下代码块成功执行。我想知道除了使用for循环之外,这个标签的用途是什么?
<script>
js:
{
alert("x");
}
</script>
答案 0 :(得分:5)
:
在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
答案 1 :(得分:3)
这就是你标记标签的方法,这是一种非常糟糕的做法,可以实现旧的'goto',这是在顺序执行中简单地跳转到代码
答案 2 :(得分:3)
这是一个标签声明。您可以使用带有break
和continue
语句形式的带标签的语句:
outer: for (var i = 0; i < 1000; ++i) {
for (var j = 0; j < 1000; j++) {
if (somethingBad())
break outer;
}
}
能够从内部嵌套循环中移出到外部迭代级别(很少)很有用。我认为我从未在数千行代码中使用它。在原始问题中发布的示例代码中,标签没有明显的用途。
答案 3 :(得分:3)
在javascript中称为Labels [MDN]
myPrettyLabel:
{
alert('testMe');
}
提供一个带有标识符的语句,您可以使用break或continue语句引用该标识符。
例如,您可以使用标签来标识循环,然后使用break或continue语句来指示程序是应该中断循环还是继续执行循环。
与一般程序中的goto
相同
避免使用标签,因为标签在JavaScript中并不常用,因为它们会使程序难以阅读和理解。尽可能避免使用标签,并根据具体情况,更喜欢调用函数或抛出错误。
答案 4 :(得分:-2)
冒号用于添加标签。正如MDN documentation for label:
所解释的那样提供带有标识符的语句,您可以使用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"
此外,正如文章所述,这种逻辑通常会使您的代码更难理解,因此您最好重新构建代码以使用其他类型的流控制(函数等)来避免使用标签。 / p>
请注意,此语法可能会令人困惑,因为它也与对象语法类似,例如:
{ js: {1}, ... }