js中冒号的作用

作者: binaryTree_fe | 来源:发表于2015-11-08 23:36 被阅读775次

说到这个题目,先从今天和朋友讨论一个问题开始。{a:1,b:2}直接在控制台输出时会报错“Uncaught SyntaxError: Unexpected token :”;一开始不能理解,一个再正常不过的对象,为什么会报错呢?其实分析下就知道,{}在js中除了表示对象直接量外,还表示语句块;如果一个语句以“{”开头时,js引擎将{}解析为语句块,所以{a:1,b:2}并未被解析为对象,而是被解析为了语句a:1,b:2。

分析到这里,似乎与题目没有任何关系,刚开始也以为讨论到此结束,但当测试{a:1}的时候,控制台会输出1,而不是报错。为什么呢?a:1当作语句处理的时候是什么意思呢?所以上面出现的问题应该不只是被解析为语句块这么简单。

下面我们进入正题,正如题目所写,我们要分析的是js中的冒号的作用,相信学过js的人都知道js中常用到冒号的地方有三处,分别是:1)A ? B : C 三元操作符;2)switch case语句中;3)对象直接量;很明显上面的问题与这三者没有关系。那除了这三种用法外,冒号还有什么作用呢?其实冒号在js中还有一个不常用的用途,即标签语句。在js中,任何语句都可以通过在它前面加上标志符和冒号来标记:identifier: statement,这样就可以在任何地方使用该标记,最常用于for循环中。

现在回到最初报错的问题上,通过对冒号作用的分析最终可得到,{a:1,b:2}单独运行时等同于a:(1,b:2),括号中的语句导致错误的产生。

上述描述中涉及的代码如下:

1)标签语句在for循环中的作用;代码如下:

label1:

       for(vari = 0; i < 5; i++) {

               if(i == 2) {

                     break label1;

                }

        }

这样的作用是,当i等于2的时候跳出for循环。

2)问题中的{a:1,b:2}实际上是由两个标签语句构成,等同于语句:

a:

   1,b:

         2

中间的1,b:在解析时会报错。

注:本文仅作为学习过程中的简单记录,如有问题请提出并指教。

相关文章

  • js中冒号的作用

    说到这个题目,先从今天和朋友讨论一个问题开始。{a:1,b:2}直接在控制台输出时会报错“Uncaught Syn...

  • Linux中冒号的作用

    1、用途说明 我们知道,在Linux系统中,冒号(:)常用来做路径的分隔符(PATH),数据字段的分隔符(/etc...

  • SAS中冒号的作用

    data meeting; input region $ mtg : mmddyy8.; sendmail=mtg...

  • Python中双冒号作用

    Python sequence slice addresses can be written asa[start:...

  • python 列表中[ ]中冒号‘:’的作用

    中括号[ ]:用于定义列表或引用列表、数组、字符串及元组中元素位置 冒号: 用于定义分片、步长。a[ : n]表示...

  • vim 冒号的作用

    ; Repeat latest f, t, F or T [count]...

  • 2019-08-13JS里面的作用域Scope

    作用域指一个变量的作用范围。 JS的作用域 在JS中,有两种作用域 全局作用域直接编写在script标签中 JS代...

  • 知识点--面试可能用得到

    ::before 和 :after中双冒号和单冒号 有什么区别?解释一下这2个伪元素的作用经常会遇到的的伪元素有:...

  • JS中this的作用

    this的用途 JS在允许在函数内部引用当前执行上下文中的变量 用来优雅准确的告诉当前运行的函数所处的上下文环境 ...

  • 前端面试3

    1.::before 和 :after中双冒号和单冒号 有什么区别?解释一下这2个伪元素的作用经常会遇到的的伪元素...

网友评论

    本文标题:js中冒号的作用

    本文链接:https://www.haomeiwen.com/subject/amofhttx.html