解析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代码
Sep 17 Javascript
JavaScript 入门基础知识 想学习js的朋友可以参考下
Dec 26 Javascript
用JS将搜索的关键字高亮显示实现代码
Nov 08 Javascript
文本框只能选择数据到文本框禁止手动输入
Nov 22 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
Aug 12 Javascript
简单实现JS对dom操作封装
Dec 02 Javascript
jquery之别踩白块游戏的简单实现
Jul 25 Javascript
JS 拼凑字符串的简单实例
Sep 02 Javascript
树结构之JavaScript
Jan 24 Javascript
基于dataset的使用和图片延时加载的实现方法
Dec 11 Javascript
vue 本地环境跨域请求proxyTable的方法
Sep 19 Javascript
浅谈vue项目,访问路径#号的问题
Aug 14 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
日本收入最高的漫画家:海贼王作者版税年收入高达8.45亿元
2020/03/04 日漫
用php获取远程图片并把它保存到本地的代码
2008/04/07 PHP
php 论坛采集程序 模拟登陆,抓取页面 实现代码
2009/07/09 PHP
MySQL的FIND_IN_SET函数使用方法分享
2012/03/27 PHP
关于PHP递归算法和应用方法介绍
2013/04/15 PHP
又一个PHP实现的冒泡排序算法分享
2014/08/21 PHP
Thinkphp框架开发移动端接口(2)
2016/08/18 PHP
JavaScript使用focus()设置焦点失败的解决方法
2014/09/03 Javascript
jQuery动态背景图片效果实现方法
2015/07/03 Javascript
js两种拼接字符串的简单方法(必看)
2016/09/02 Javascript
gulp安装以及打包合并的方法教程
2017/11/19 Javascript
angularJs中跳转到指定的锚点实例($anchorScroll)
2018/08/31 Javascript
ES6中let 和 const 的新特性
2018/09/03 Javascript
vue 自定义右键样式的实例代码
2019/11/06 Javascript
解决ele ui 表格表头太长问题的实现
2019/11/13 Javascript
vue不操作dom实现图片轮播的示例代码
2019/12/18 Javascript
前端深入理解Typescript泛型概念
2020/03/09 Javascript
Openlayers实现距离面积测量
2020/09/28 Javascript
JavaScript实现跟随鼠标移动的盒子
2021/01/28 Javascript
Python中输出ASCII大文字、艺术字、字符字小技巧
2015/04/28 Python
Python写的一个简单监控系统
2015/06/19 Python
python中字符串变二维数组的实例讲解
2018/04/03 Python
使用Python实现跳一跳自动跳跃功能
2019/07/10 Python
python之PyQt按钮右键菜单功能的实现代码
2019/08/17 Python
从训练好的tensorflow模型中打印训练变量实例
2020/01/20 Python
python中的对数log函数表示及用法
2020/12/09 Python
CSS3实现swap交换动画
2016/01/19 HTML / CSS
家用个人磨皮机:Trophy Skin
2017/03/30 全球购物
在网上学习全世界最好的课程:Coursera
2017/11/07 全球购物
shell程序中如何注释
2012/01/28 面试题
医德考评自我评价
2014/09/14 职场文书
2014年社区计生工作总结
2014/11/18 职场文书
出租车拒载检讨书
2015/01/28 职场文书
节约用电通知
2015/04/25 职场文书
学习党史心得体会2016
2016/01/23 职场文书
让人感觉高大上的讲话稿怎么写?
2019/07/08 职场文书