解析JavaScript中点号“.”的多义性

 这篇文章主要介绍了JavaScript中点号“.”的多义性。需要的朋友可以过来参考下,希望对大家有所帮助

点号「.」在JavaScript中有两种语义
 
语义1、表示算术中的小数点(浮点数),如 2.5
 
语义2、取对象属性、方法,如 [].push(2)
 
这几乎没有任何难理解的地方,但下面这个问题则很有趣。
 
 
代码如下:
// 这行代码会如何执行 
1.toString(); 
 
Firebug 中如下
 
 
 
 
这里的点号表达的是上述的语义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。

时间: 2025-01-30 04:45:43

解析JavaScript中点号“.”的多义性的相关文章

解析JavaScript中点号“.”的多义性_javascript技巧

点号「.」在JavaScript中有两种语义 语义1.表示算术中的小数点(浮点数),如 2.5 语义2.取对象属性.方法,如 [].push(2) 这几乎没有任何难理解的地方,但下面这个问题则很有趣. 复制代码 代码如下: // 这行代码会如何执行 1.toString(); Firebug 中如下 这里的点号表达的是上述的语义1,因此点号后面必须跟一个数字,这里跟的是toString,报语法错了. 解决方法很简单,如加个小括号 复制代码 代码如下: (1).toString(); 还可以这么写

解析Javascript小括号“()”的多义性_javascript技巧

Javascript中小括号有五种语义 语义1,函数声明时参数表 复制代码 代码如下: function func(arg1,arg2){   // ... } 语义2,和一些语句联合使用以达到某些限定作用 复制代码 代码如下: // 和for in一起使用 for(var a in obj){   // ... } // 和if一起使用 if(boo){   //... } // 和while一起使用 while(boo){   // ... } // 和do while一起使用 do{  

解析Javascript中中括号“[]”的多义性_javascript技巧

Javascript中括号有四种语义 语义1,声明数组 复制代码 代码如下: var ary = []; // 声明一个空数组var ary = [1,3]; // 声明一个数组,同时赋初值 语义2,取数组成员 复制代码 代码如下: var ary = [1,2,3];var item = ary[0]; 语义3,定义对象成员 (可以不遵循标识符规则 ) 复制代码 代码如下: var obj = {}; // 为obj添加一个属性name,name是合法的标识符,即也可以通过obj.name方式

解析Javascript中大括号“{}”的多义性_javascript技巧

JS中大括号有四种语义作用 语义1,组织复合语句,这是最常见的 复制代码 代码如下: if( condition ) {   //... }else {   //... } for() {   //... } 语义2,对象直接量声明 复制代码 代码如下: var obj = {     name : 'jack',     age : 23 }; 整个是个赋值语句,其中的{name:'jack',age:23}是个表达式. 语义3,声明函数或函数直接量 复制代码 代码如下: function f

Javascript小括号“()”的多义性

 这篇文章主要介绍了Javascript小括号"()"的多义性.需要的朋友可以过来参考下,希望对大家有所帮助 Javascript中小括号有五种语义   语义1,函数声明时参数表     代码如下: function func(arg1,arg2){    // ...  }    语义2,和一些语句联合使用以达到某些限定作用  代码如下: // 和for in一起使用  for(var a in obj){    // ...  }    // 和if一起使用  if(boo){ 

全面解析JavaScript中“&&”和“||”操作符(总结篇)_javascript技巧

1.||(逻辑或), 从字面上来说,只有前后都是false的时候才返回false,否则返回true. alert(true||false); // true alert(false||true); // true alert(true||true); // true alert(false||false); // false 这个傻子都知道~~ 但是,从深层意义上来说的话,却有另一番天地,试下面代码 alert(0||1);//1 显然,我们知道,前面0意味着false,而后面1意味着true,

解析javascript图片懒加载与预加载的分析总结_javascript技巧

本篇文章主要介绍了懒加载和预加载两种技术的解析,废话不多说,一起来看吧. 懒加载也叫延迟加载:前一篇文章有介绍:JS图片延迟加载 延迟加载图片或符合某些条件时才加载某些图片. 预加载:提前加载图片,当用户需要查看时可直接从本地缓存中渲染. 两种技术的本质:两者的行为是相反的,一个是提前加载,一个是迟缓甚至不加载.懒加载对服务器前端有一定的缓解压力作用,预加载则会增加服务器前端压力. 懒加载的意义及实现方式有: 意义: 懒加载的主要目的是作为服务器前端的优化,减少请求数或延迟请求数. 实现方式:

Javascript中中括号“[]”的多义性

 这篇文章主要介绍了Javascript中中括号"[]"的多义性.需要的朋友可以过来参考下,希望对大家有所帮助 Javascript中括号有四种语义   语义1,声明数组      代码如下: var ary = []; // 声明一个空数组 var ary = [1,3]; // 声明一个数组,同时赋初值   语义2,取数组成员  代码如下: var ary = [1,2,3]; var item = ary[0];   语义3,定义对象成员 (可以不遵循标识符规则 ) 代码如下:

Javascript中大括号“{}”的多义性

     这篇文章主要介绍了Javascript中大括号"{}"的多义性.需要的朋友可以过来参考下,希望对大家有所帮助 JS中大括号有四种语义作用   语义1,组织复合语句,这是最常见的      代码如下: if( condition ) {    //...  }else {    //...  }  for() {    //...  }    语义2,对象直接量声明  代码如下: var obj = {      name : 'jack',      age : 23  };