在javascript中使用以下冒号有什么用处

时间:2013-04-25 14:03:43

标签: javascript

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

<script>

js:
{
   alert("x");  
}

</script>

5 个答案:

答案 0 :(得分:5)

:在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

  4. 时常见这种表示法

答案 1 :(得分:3)

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

答案 2 :(得分:3)

这是一个标签声明。您可以使用带有breakcontinue语句形式的带标签的语句:

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中并不常用,因为它们会使程序难以阅读和理解。尽可能避免使用标签,并根据具体情况,更喜欢调用函数或抛出错误。


参考:SO - What does the colon (:) in JavaScript represent?

答案 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}, ... }