解析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模拟多线程
Feb 07 Javascript
Jquery AutoComplete自动完成 的使用方法实例
Mar 19 Javascript
预加载css或javascript的js代码
Apr 23 Javascript
node.js中的fs.writeSync方法使用说明
Dec 15 Javascript
node.js中使用socket.io制作命名空间
Dec 15 Javascript
javascript实现获取字符串hash值
May 10 Javascript
jQuery Validate插件实现表单验证
Aug 19 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
Sep 05 Javascript
BootStrap Table 获取同行不同列元素的方法
Dec 19 Javascript
JavaScript常见继承模式实例小结
Jan 11 Javascript
JS栈stack类的实现与使用方法示例
Jan 31 Javascript
js cavans实现静态滚动弹幕
May 21 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数组函数序列之array_pop() - 删除数组中的最后一个元素
2011/11/07 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
Yii2框架可逆加密简单实现方法
2017/08/25 PHP
php+js实现裁剪任意形状图片
2018/10/31 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
JS日期和时间选择控件升级版(自写)
2013/08/02 Javascript
JQuery表单验证插件EasyValidator用法分析
2014/11/15 Javascript
node.js 使用ejs模板引擎时后缀换成.html
2015/04/22 Javascript
javascript实现漂亮的拖动层,窗口拖拽特效
2015/04/24 Javascript
Node.js中的process.nextTick使用实例
2015/06/25 Javascript
Jquery实现的简单轮播效果【附实例】
2016/04/19 Javascript
javascript完美实现给定日期返回上月日期的方法
2017/06/15 Javascript
vue弹窗组件使用方法
2018/04/28 Javascript
QRCode.js二维码生成并能长按识别
2018/10/16 Javascript
在Python中使用matplotlib模块绘制数据图的示例
2015/05/04 Python
django之session与分页(实例讲解)
2017/11/13 Python
利用Python如何实现数据驱动的接口自动化测试
2018/05/11 Python
python3图片文件批量重命名处理
2019/10/31 Python
HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
2013/04/24 HTML / CSS
canvas 基础之图像处理的使用
2020/04/10 HTML / CSS
美国领先的礼品卡网站:GiftCards.com
2016/11/02 全球购物
Bench加拿大官方网站:英国城市服装品牌
2017/11/03 全球购物
廉价航班、机票和酒店:JustFly
2018/02/07 全球购物
毕业生动漫设计求职信
2013/10/11 职场文书
教育局长自荐信范文
2013/12/22 职场文书
职业生涯规划书基本格式
2014/01/06 职场文书
探矿工程师自荐信
2014/01/24 职场文书
食品安全汇报材料
2014/08/18 职场文书
合作协议书格式
2014/08/19 职场文书
二手房购房协议书范本
2014/10/05 职场文书
财政局党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
民事和解协议书格式
2014/11/29 职场文书
海上钢琴师观后感
2015/06/03 职场文书
教你解决往mysql数据库中存入汉字报错的方法
2021/05/06 MySQL
5种方法告诉你如何使JavaScript 代码库更干净
2021/09/15 Javascript
【海涛教你打DOTA】黑鸟第一视角解说
2022/04/01 DOTA