6

以下代码块成功执行。我想知道除了使用 for 循环之外,这个标签还有什么用途?

<script>

js:
{
   alert("x");  
}

</script>
4

5 回答 5

6

:无论如何,我都知道在javascript中有一些用途。

  1. ternary operator- 用于评估if单行中的语句:

    var x = "yes" == "yes" ? true : false;
    

    上面这行代码在功能上等价于:

    if("yes" == "yes"){
        var x = true;
    }
    else{
        var x = false;
    }
    
  2. 标记代码块的开头 - 移动到代码块

    begin:
    for(int i = 0; i < 10; i++){
        break begin;
    }
    
  3. 对象文字 - 感谢@Ian 的提醒

    var someObject= {
        item: 'some value',
        anotherItem: 2 // Can put any type of variable here
    };
    

    这种类型的符号在使用JSON时很常见

于 2013-04-25T14:10:32.830 回答
3

这是一个标签声明。您可以将带标签的语句与breakandcontinue语句的形式一起使用:

outer: for (var i = 0; i < 1000; ++i) {
  for (var j = 0; j < 1000; j++) {
    if (somethingBad())
      break outer;
  }
}

能够从内部嵌套循环到外部迭代级别(很少)有用。我认为我从未在数千行代码中使用过它。在原始问题中发布的示例代码中,标签没有明显的用途。

于 2013-04-25T14:09:59.210 回答
3

它在 javascript中称为标签[MDN]

myPrettyLabel:
{
   alert('testMe');
}

提供带有标识符的语句,您可以使用 break 或 continue 语句引用该标识符。

例如,您可以使用标签来标识循环,然后使用 break 或 continue 语句来指示程序是应该中断循环还是继续执行。

goto一般程序相同


请注意

避免使用标签,因为标签在 JavaScript 中不是很常用,因为它们使程序更难阅读和理解。尽可能避免使用标签,并且根据具体情况,更喜欢调用函数或抛出错误。


参考:SO - JavaScript 中的冒号 (:) 代表什么?

于 2013-04-25T14:12:27.090 回答
2

这就是您标记标签的方式,这是一种非常糟糕的做法,它可以实现旧的“goto”,这是在顺序执行中简单跳转到代码

于 2013-04-25T14:07:25.113 回答
-1

冒号用于添加标签。正如标签的 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}, ... }
于 2013-04-25T14:13:22.570 回答