冒号html5,js中冒号的作用 - binaryTree-fe
说到这个题目,先从今天和朋友讨论一个问题开始。{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相关推荐
- js中getBoundingClientRect的作用及兼容方案
js中getBoundingClientRect的作用及兼容方案 1.getBoundingClientRect的作用 getBoundingClientRect用于获取某个html元素相对于视窗的位 ...
- created写法_vue.js中created方法作用
这是它的一个生命周期钩子函数,就是一个vue实例被生成后调用这个函数.一个vue实例被生成后还要绑定到某个html元素上,之后还要进行编译,然后再插入到document中.每一个阶段都会有一个钩子函数 ...
- js里css不起作用,CSS文件在NODE js中不起作用
出于某种原因,我已将我的css文件附加到我的html文件中.然后我在节点js中使用express打开html文件.但是,当我通过节点js运行Web服务器时,css文件无法打开.我认为既然css文件包含 ...
- matlab 冒号范围,MATLAB中冒号的用法
冒号(:)是最有用的运算符在matlab之一.它是用来创建矢量,下标数组和指定的迭代. 如果想创建一个行向量,包含从1到10的整数,如下: 1:10 MATLAB执行该语句,并返回一个行向量,包含从1 ...
- js中return的作用及用法
这里面的return含有一些细节知识: 例如:onClick='return add_onclick()'与 onClick='add_onclick()'的区别 JAVASCRIPT在事件中调用函数 ...
- js中继承的几种用法总结(apply,call,prototype)
本篇文章主要介绍了js中继承的几种用法总结(apply,call,prototype) 需要的朋友可以过来参考下,希望对大家有所帮助 一,js中对象继承 js中有三种继承方式 1.js原型(proto ...
- JavaWeb中外部引入的js中涉及到location.href的页面跳转/jsp页面的外部js文件引入
当js在jsp页面中写的时候没有任何问题如下所示: function deleteP(obj){if(confirm("你真舍得丢弃我吗?")){//发送请求location.hr ...
- 前端开发:JS中关于正则表达式的使用汇总
前言 在前端开发过程中,关于正则表达式的使用也是必备技能,尤其是在实际业务需求的时候,需要处理一些不能按照正常语句操作的逻辑,如前端开发中的字符匹配.参数处理等都需要正则表达式来匹配截取处理.虽然正则 ...
- Vue.js中的v-model指令(双向绑定)
Vue.js中v-model的作用 v-model的作用和使用场景 1.v-model的作用--双向绑定 2.v-model双向绑定的使用场景--表单 3.总结 v-model的作用和使用场景 你好! ...
最新文章
- Mysql忘记用户密码的解决办法
- 互联网金融产品做第三方支付平台托管需要注意什么?
- js实现浏览器后退页面刷新
- PVS 6.1 Configuring Services Failed
- IBM研究院计画5年改变人类生活创新预测
- SPI、I2C、UART三种串行总线协议的区别和SPI接口介绍(转)
- scss提取 vue_vue 中使用sass实现主体换肤
- JavaScript 函数(方法)的封装技巧要领及其重要性
- 一步一步教你如何安装Dart
- php判断电话号码是否为空号,如何批量检测手机号码是否为空号、无效号码?
- u盘文件名乱码linux,U盘文件名乱码的原因和解决办法
- java gif图片分割合成,js实现GIF图片的分解和合成
- Python exe Fatal error detected
- 有教学用计算机,在计算机教学中运用有效教学方法初探
- DAOs(去中心化自治组织)
- 韦小宝是咱IT人!理由有8!!
- 蓝牙配对,解决蓝牙多次连接不上的问题
- 两部委牵头 4央企联手设健康医疗大数据平台公司
- linux下打印图片不显示出来的,为什么打印机打印不了图片_解决打印机打印不了图片的方法-系统城...
- spotify能免费下歌吗_什么是Spotify Duo,它适合您吗?
热门文章
- java 生成 dll_java类封装成dll
- 如何音频转文字?仅需这三个步骤,简单易上手
- Vue 新手学习笔记:vue-element-admin 之入门开发教程(v4.0.0 之前)
- babel -presets
- react-native在小米8 Android 手机 出现黑边 或 透明边
- linux系统下使用docker镜像并安装容器
- position:sticky 粘性定位
- Unity灯光、烘焙小结(五)Unity官方场景(PBR材质)制作经验总结
- 西安电子科技大学马克思主义683/883高分学长经验分享
- matlab循环语句提高效率,matlab循环语句for怎么用