解析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 相关文章推荐
热点新闻滚动特效的js代码
Aug 17 Javascript
jquery监听div内容的变化具体实现思路
Nov 04 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
Feb 13 Javascript
简洁实用的BootStrap jQuery手风琴插件
Aug 31 Javascript
微信公众平台开发教程(五)详解自定义菜单
Dec 02 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
Jan 23 Javascript
浅谈angularJS的$watch失效问题的解决方案
Aug 11 Javascript
JS中Attr的用法详解
Oct 09 Javascript
微信小程序swiper实现滑动放大缩小效果
Nov 15 Javascript
微信小程序云开发之使用云存储
May 17 Javascript
微信小程序使用蓝牙小插件
Sep 23 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
Sep 24 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开发GUI
2006/10/09 PHP
PHP新手上路(十四)
2006/10/09 PHP
PHP中字符串长度的截取用法示例
2017/01/12 PHP
jquery监控数据是否变化(修正版)
2011/04/12 Javascript
jquery 卷帘效果实现代码(不同方向)
2013/02/05 Javascript
Javascript中的call()方法介绍
2015/03/15 Javascript
深入学习JavaScript对象
2015/10/13 Javascript
vue中的非父子间的通讯问题简单的实例代码
2017/07/19 Javascript
基于BootStrap实现简洁注册界面
2017/07/20 Javascript
js 判断一个数字是不是2的n次方幂的实例
2017/11/26 Javascript
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
Angular 2使用路由自定义弹出组件toast操作示例
2019/05/10 Javascript
vue实现学生信息管理系统
2020/05/30 Javascript
vue 验证两次输入的密码是否一致的方法示例
2020/09/29 Javascript
Python实现简单的获取图片爬虫功能示例
2017/07/12 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
2017/11/23 Python
Python 反转字符串(reverse)的方法小结
2018/02/20 Python
python利用Opencv实现人脸识别功能
2019/04/25 Python
python整合ffmpeg实现视频文件的批量转换
2019/05/31 Python
pyqt5 键盘监听按下enter 就登陆的实例
2019/06/25 Python
Django 实现xadmin后台菜单改为中文
2019/11/15 Python
Python气泡提示与标签的实现
2020/04/01 Python
Python PyQt5整理介绍
2020/04/01 Python
Python生成器generator原理及用法解析
2020/07/20 Python
Python数据分析库pandas高级接口dt的使用详解
2020/12/11 Python
Nike德国官网:Nike.com (DE)
2018/11/13 全球购物
理货员的岗位职责
2013/11/23 职场文书
检察官就职演讲稿
2014/01/13 职场文书
科研课题实施方案
2014/03/18 职场文书
《恐龙》教学反思
2014/04/27 职场文书
财务人员担保书
2014/05/13 职场文书
教师个人成长总结
2015/02/11 职场文书
品质保证书格式
2015/02/28 职场文书
会计专业求职信范文
2015/03/19 职场文书
优秀班干部主要事迹材料
2015/11/04 职场文书
七年级作文之秋游
2019/10/21 职场文书