解析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实现的在当前窗口中漂浮框的代码
Mar 15 Javascript
解析javascript 实用函数的使用详解
May 10 Javascript
jQuery ajax调用WCF服务实例
Jul 16 Javascript
webapp框架AngularUI的demo改造之路
Dec 21 Javascript
JS中script标签defer和async属性的区别详解
Aug 12 Javascript
Vue的事件响应式进度条组件实例详解
Feb 04 Javascript
Angular2.0实现modal对话框的方法示例
Feb 18 Javascript
React Native悬浮按钮组件的示例代码
Apr 05 Javascript
vue+jquery+lodash实现滑动时顶部悬浮固定效果
Apr 28 jQuery
浅谈js闭包理解
Mar 28 Javascript
Vue通过provide inject实现组件通信
Sep 03 Javascript
Vue双向数据绑定(MVVM)的原理
Oct 03 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
让CodeIgniter数据库缓存自动过期的处理的方法
2014/06/12 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
2016/11/15 PHP
Laravel 5.4因特殊字段太长导致migrations报错的解决
2017/10/22 PHP
PHP设计模式之单例模式原理与实现方法分析
2018/04/25 PHP
JavaScript Array扩展实现代码
2009/10/14 Javascript
JavaScript 组件之旅(四):测试 JavaScript 组件
2009/10/28 Javascript
有关js的变量作用域和this指针的讨论
2010/12/16 Javascript
JQuery处理json与ajax返回JSON实例代码
2014/01/03 Javascript
jQuery中append()方法用法实例
2014/12/25 Javascript
jQuery实现鼠标经过提示信息的地图热点效果
2015/04/26 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
2016/08/30 Javascript
javascript实现根据汉字获取简拼
2016/09/25 Javascript
JS实现简单的浮动碰撞效果示例
2017/12/28 Javascript
mpvue 单文件页面配置详解
2018/12/02 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
利用node.js开发cli的完整步骤
2020/12/29 Javascript
详解阿里Node.js技术文档之process模块学习指南
2021/01/04 Javascript
Pycharm2017版本设置启动时默认自动打开项目的方法
2018/10/29 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
Python从单元素字典中获取key和value的实例
2018/12/31 Python
python实现图片彩色转化为素描
2019/01/15 Python
python+selenium 鼠标事件操作方法
2019/08/24 Python
python中执行smtplib失败的处理方法
2020/07/01 Python
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
浅谈pc和移动端的响应式的使用
2019/01/03 HTML / CSS
html5定位获取当前位置并在百度地图上显示
2014/08/22 HTML / CSS
日本整理专家Marie Kondo的官方在线商店:KonMari
2020/06/29 全球购物
一道Delphi上机题
2012/06/04 面试题
20年同学聚会邀请函
2014/02/04 职场文书
《一本男孩子必读的书》教学反思
2014/02/19 职场文书
三分钟演讲稿范文
2014/04/24 职场文书
银行爱岗敬业演讲稿
2014/05/05 职场文书
2014年车间工作总结
2014/11/21 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
幼儿园万圣节活动总结
2015/05/05 职场文书
励志语录:只有自己足够强大,才能不被别人践踏
2020/01/09 职场文书