说到这个题目,先从今天和朋友讨论一个问题开始。{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),括号中的语句导致错误的产生。

补充:首先感[email protected]的回复,根据@Lumia1020的问题,我加上代码做如下补充:

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

label1:

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

if(i == 2) {

break label1;

}

}

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

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

a:

1,b:

2

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

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

冒号html5,js中冒号的作用 - binaryTree-fe相关推荐

  1. js中getBoundingClientRect的作用及兼容方案

    js中getBoundingClientRect的作用及兼容方案 1.getBoundingClientRect的作用 getBoundingClientRect用于获取某个html元素相对于视窗的位 ...

  2. created写法_vue.js中created方法作用

    这是它的一个生命周期钩子函数,就是一个vue实例被生成后调用这个函数.一个vue实例被生成后还要绑定到某个html元素上,之后还要进行编译,然后再插入到document中.每一个阶段都会有一个钩子函数 ...

  3. js里css不起作用,CSS文件在NODE js中不起作用

    出于某种原因,我已将我的css文件附加到我的html文件中.然后我在节点js中使用express打开html文件.但是,当我通过节点js运行Web服务器时,css文件无法打开.我认为既然css文件包含 ...

  4. matlab 冒号范围,MATLAB中冒号的用法

    冒号(:)是最有用的运算符在matlab之一.它是用来创建矢量,下标数组和指定的迭代. 如果想创建一个行向量,包含从1到10的整数,如下: 1:10 MATLAB执行该语句,并返回一个行向量,包含从1 ...

  5. js中return的作用及用法

    这里面的return含有一些细节知识: 例如:onClick='return add_onclick()'与 onClick='add_onclick()'的区别 JAVASCRIPT在事件中调用函数 ...

  6. js中继承的几种用法总结(apply,call,prototype)

    本篇文章主要介绍了js中继承的几种用法总结(apply,call,prototype) 需要的朋友可以过来参考下,希望对大家有所帮助 一,js中对象继承 js中有三种继承方式 1.js原型(proto ...

  7. JavaWeb中外部引入的js中涉及到location.href的页面跳转/jsp页面的外部js文件引入

    当js在jsp页面中写的时候没有任何问题如下所示: function deleteP(obj){if(confirm("你真舍得丢弃我吗?")){//发送请求location.hr ...

  8. 前端开发:JS中关于正则表达式的使用汇总

    前言 在前端开发过程中,关于正则表达式的使用也是必备技能,尤其是在实际业务需求的时候,需要处理一些不能按照正常语句操作的逻辑,如前端开发中的字符匹配.参数处理等都需要正则表达式来匹配截取处理.虽然正则 ...

  9. Vue.js中的v-model指令(双向绑定)

    Vue.js中v-model的作用 v-model的作用和使用场景 1.v-model的作用--双向绑定 2.v-model双向绑定的使用场景--表单 3.总结 v-model的作用和使用场景 你好! ...

最新文章

  1. Mysql忘记用户密码的解决办法
  2. 互联网金融产品做第三方支付平台托管需要注意什么?
  3. js实现浏览器后退页面刷新
  4. PVS 6.1 Configuring Services Failed
  5. IBM研究院计画5年改变人类生活创新预测
  6. SPI、I2C、UART三种串行总线协议的区别和SPI接口介绍(转)
  7. scss提取 vue_vue 中使用sass实现主体换肤
  8. JavaScript 函数(方法)的封装技巧要领及其重要性
  9. 一步一步教你如何安装Dart
  10. php判断电话号码是否为空号,如何批量检测手机号码是否为空号、无效号码?
  11. u盘文件名乱码linux,U盘文件名乱码的原因和解决办法
  12. java gif图片分割合成,js实现GIF图片的分解和合成
  13. Python exe Fatal error detected
  14. 有教学用计算机,在计算机教学中运用有效教学方法初探
  15. DAOs(去中心化自治组织)
  16. 韦小宝是咱IT人!理由有8!!
  17. 蓝牙配对,解决蓝牙多次连接不上的问题
  18. 两部委牵头 4央企联手设健康医疗大数据平台公司
  19. linux下打印图片不显示出来的,为什么打印机打印不了图片_解决打印机打印不了图片的方法-系统城...
  20. spotify能免费下歌吗_什么是Spotify Duo,它适合您吗?

热门文章

  1. java 生成 dll_java类封装成dll
  2. 如何音频转文字?仅需这三个步骤,简单易上手
  3. Vue 新手学习笔记:vue-element-admin 之入门开发教程(v4.0.0 之前)
  4. babel -presets
  5. react-native在小米8 Android 手机 出现黑边 或 透明边
  6. linux系统下使用docker镜像并安装容器
  7. position:sticky 粘性定位
  8. Unity灯光、烘焙小结(五)Unity官方场景(PBR材质)制作经验总结
  9. 西安电子科技大学马克思主义683/883高分学长经验分享
  10. matlab循环语句提高效率,matlab循环语句for怎么用