解析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 相关文章推荐
IE和Mozilla的兼容性汇总event
Aug 12 Javascript
基于jQuery的消息提示插件 DivAlert之旅(二)
Apr 01 Javascript
jQuery EasyUI 的EasyLoader功能介绍
Sep 12 Javascript
JavaScript实现简单的数字倒计时
May 15 Javascript
javascript中递归函数用法注意点
Jul 30 Javascript
原生js仿淘宝网商品放大镜效果
Feb 28 Javascript
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
Feb 06 Javascript
JavaScript常见JSON操作实例分析
Aug 08 Javascript
微信小程序实现日历效果
Dec 28 Javascript
微信小程序按钮点击动画效果的实现
Sep 04 Javascript
通过angular CDK实现页面元素拖放的步骤详解
Jul 01 Javascript
详解Js模块化的作用原理和方案
Apr 29 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
php 一元分词算法
2009/11/30 PHP
PHP strncasecmp字符串比较的小技巧
2011/01/04 PHP
PHP精确计算功能示例
2016/11/29 PHP
mac pecl 安装php7.1扩展教程
2019/10/17 PHP
JS解密入门之凭直觉解
2008/06/25 Javascript
增强用户体验友好性之jquery easyui window 窗口关闭时的提示
2012/06/22 Javascript
Web前端框架bootstrap实战【第一次接触使用】
2016/12/28 Javascript
JavaScript中的 attribute 和 jQuery中的 attr 方法浅析
2017/01/04 Javascript
JS验证码实现代码
2017/09/14 Javascript
springmvc接收jquery提交的数组数据代码分享
2017/10/28 jQuery
python快速排序代码实例
2013/11/21 Python
Python中每次处理一个字符的5种方法
2015/05/21 Python
基python实现多线程网页爬虫
2015/09/06 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
2016/01/07 Python
Python基础之文件读取的讲解
2019/02/16 Python
利用python实现PSO算法优化二元函数
2019/11/13 Python
Python使用docx模块实现刷题功能代码
2020/02/13 Python
pycharm的python_stubs问题
2020/04/08 Python
用Python制作音乐海报
2021/01/26 Python
HTML5之SVG 2D入门7—SVG元素的重用与引用
2013/01/30 HTML / CSS
墨尔本照明批发商店:Mica Lighting
2017/12/28 全球购物
西部世纪面试题
2014/12/05 面试题
影视动画专业个人的自我评价
2013/12/31 职场文书
化工专业大学生职业生涯规划书
2014/01/14 职场文书
学生会宣传部部长竞选演讲稿
2014/04/25 职场文书
班主任与学生安全责任书
2014/07/25 职场文书
装配出错检讨书
2014/09/23 职场文书
群众路线教育实践活动剖析材料
2014/09/30 职场文书
事业单位个人总结
2015/02/12 职场文书
消防验收申请报告
2015/05/15 职场文书
对领导班子的意见和建议
2015/06/08 职场文书
有关西游记的读书笔记
2015/06/25 职场文书
排球赛新闻稿
2015/07/17 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书
用CSS3画一个爱心
2021/04/27 HTML / CSS
JavaScript阻止事件冒泡的方法
2021/12/06 Javascript