解析JavaScript中点号“.”的多义性


Posted in Javascript onDecember 02, 2013

点号「.」在JavaScript中有两种语义

语义1、表示算术中的小数点(浮点数),如 2.5

语义2、取对象属性、方法,如 [].push(2)

这几乎没有任何难理解的地方,但下面这个问题则很有趣。

// 这行代码会如何执行 
1.toString();

Firebug 中如下解析JavaScript中点号“.”的多义性

这里的点号表达的是上述的语义1,因此点号后面必须跟一个数字,这里跟的是toString,报语法错了。

解决方法很简单,如加个小括号

(1).toString();

还可以这么写,但难理解些
1..toString();

之所以浏览器中都能运行,是因为各浏览器JS引擎都把“1..toString()”理解成了 “1.0.toString()”。这里第一个点号是语义1,第二个点号是语义2。

还有更奇怪的写法,竟然也没有报错

1 .toString(); // 注意点号前面有一个空格

显然,这里的点号是语义2,即JS引擎会忽略点运算符前边的空格,其实无论前后的空格都会忽略。如下
1 . toString(); // 点号前后都有一个空格 
1  .  toString(); // 点号前后各有两个空格 
1    .toString(); // 点号前有一个tab 
1    .    toString(); // 点号前后各有一个tab

JS引擎不但会忽略空格,也会忽略tab。
Javascript 相关文章推荐
Javascript 面向对象(二)封装代码
May 23 Javascript
jQuery插件-jRating评分插件源码分析及使用方法
Dec 28 Javascript
自己写了一个展开和收起的多更能型的js效果
Mar 05 Javascript
jqGrid读取选择的多行的某个属性代码
May 18 Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
Dec 14 Javascript
jQuery 操作input中radio的技巧
Jul 18 Javascript
js改变html的原有内容实现方法
Oct 05 Javascript
Angular 4依赖注入学习教程之ValueProvider的使用(七)
Jun 04 Javascript
微信小程序实现长按删除图片的示例
May 18 Javascript
vue 刷新之后 嵌套路由不变 重新渲染页面的方法
Sep 13 Javascript
使用JS来动态操作css的几种方法
Dec 18 Javascript
JavaScript字符串转数字的简单实现方法
Nov 27 Javascript
解析JavaScript中的不可见数据类型
Dec 02 #Javascript
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
Dec 02 #Javascript
jquery遍历之parent()和parents()的区别及parentsUntil()方法详解
Dec 02 #Javascript
jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
Dec 02 #Javascript
javascript中对Attr(dom中属性)的操作示例讲解
Dec 02 #Javascript
浅析jquery的作用与优势
Dec 02 #Javascript
jquery获取css中的选择器(实例讲解)
Dec 02 #Javascript
You might like
日本十大最佳动漫,全都是二次元的神级作品
2019/10/05 日漫
通过文字传递创建的图形按钮
2006/10/09 PHP
别人整理的服务器变量:$_SERVER
2006/10/20 PHP
解析PHP中常见的mongodb查询操作
2013/06/20 PHP
PHP的PSR规范中文版
2013/09/28 PHP
PHP采用XML-RPC构造Web Service实例教程
2014/07/16 PHP
PHP简单判断手机设备的方法
2016/08/23 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
JavaScript触发器详解
2007/03/10 Javascript
基于jquery实现的自动补全功能
2015/03/12 Javascript
JavaScript去除数组里重复值的方法
2015/07/13 Javascript
深入浅析Node.js 事件循环
2015/12/20 Javascript
Javascript中的迭代、归并方法详解
2016/06/14 Javascript
XMLHttpRequest Level 2 使用指南
2016/08/26 Javascript
用AngularJS的指令实现tabs切换效果
2016/08/31 Javascript
浅谈Angular 中何时取消订阅
2017/11/22 Javascript
完美解决axios跨域请求出错的问题
2018/02/05 Javascript
JavaScript 生成唯一ID的几种方式
2021/02/19 Javascript
[18:16]sakonoko 2017年卡尔集锦
2018/02/06 DOTA
Python中类的定义、继承及使用对象实例详解
2015/04/30 Python
Python通过90行代码搭建一个音乐搜索工具
2015/07/29 Python
python导入时小括号大作用
2017/01/10 Python
终端命令查看TensorFlow版本号及路径的方法
2018/06/13 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
python 3.6.5 安装配置方法图文教程
2018/09/18 Python
python matplotlib实现双Y轴的实例
2019/02/12 Python
python识别文字(基于tesseract)代码实例
2019/08/24 Python
Python网络编程之使用TCP方式传输文件操作示例
2019/11/01 Python
HTML5有哪些新特征
2015/12/01 HTML / CSS
HTML5如何使用SVG的方法示例
2019/01/11 HTML / CSS
学校司机岗位职责
2013/11/14 职场文书
行政管理专业求职信
2014/07/06 职场文书
2016年高校自主招生自荐信范文
2015/03/24 职场文书
2015年化妆品销售工作总结
2015/05/11 职场文书
幼儿园大班开学寄语(2016秋季)
2015/12/03 职场文书
Pytest中conftest.py的用法
2021/06/27 Python