雪后残阳

舍不得却还是要走,抹掉名字,抹不掉一段回忆

Javascript陷阱。。。。。。。

1.浮点运算

这可能是挫败一些对javascript不熟悉并准备执行一些数学运算的人的主要原 因.

  1. <script>  
  2. alert(0.02 / 0.1);  //0.19999999999999998    
  3. alert(1.14 * 100);  //113.99999999999999    ;)   
  4. </script> 

Math.round() 就能在这里派上用场.

2.加号操作符的重载

"+"加号运算符即能做算术运算,又能够做字 符串的连接.如果正确的使用它是很便利的.让我们看一看.

  1. <script>  
  2. var  msg, one= "1" ;  
  3. msg = 2 + "1" // msg = "21"   
  4. msg = 2 + one; // msg = "21"   
  5. msg = 1 + 1 + 1 + " musketeers" // msg = "3 musketeers"   
  6. msg = "Bond "  + 0 + 0 + 7;  //msg = "Bond 007"     
  7. </script> 

上 述行为是因为这些运算都是从左到右执行的.类型的转换是基于其中的字符串或数字.

3.行尾插入分号

javascript 自动在行尾插入分号";",让我们来看看这在一个简单的示例中的情况.

  1. <script>  
  2. function  returnSame(a){  
  3.    return                   //Inserts semi-colon to convert to return;   
  4.    a                      //a becomes a; - Unreachable   
  5. }  
  6. alert(returnSame(2));  //Output is undefined   
  7. </script> 

当 在创建对象或使用对象的值的时候这个神奇的分号能使事情变得更复杂.

4.typeof操作符

typeof 是一个一元操作符,运算结果往往并不是如预期的那样.令人吃惊的是对"null"的运算结果是"object"

  1. <script>  
  2. var  obj={};   //object created using object literal   
  3. var  arr=[];   //array created by array literal   
  4. alert(typeof (obj));    //object  - Good   
  5. alert(typeof (arr));    //object  - Bad   
  6. alert(typeof ( null ));   //object  - Ugly!  ;)  
  7. </script>

它仅仅能 查找对象的原始类型.

5. false, null, undefined, NaN, Infinity

尽 管他们看起来相似,但他们代表 着不通的意思.javascript有3种基本数据类型数字numbers, 字符串strings 和布尔 boolean,除此之外还有两个不重要的数据类型"undefine"和"null".按照"=="运算符运算,null和undefine是相等的.

  1. <script>  
  2. var  a;  
  3. alert (a);    //undefined   
  4. alert (1/0);  //Infinity   
  5. alert (0/0);  //NaN   
  6. 0/0 == 0/0;   //false - a NaN != NaN   
  7. alert (b);    //error   
  8. </script> 

6. 字符串只替换第一个匹配的字符

与PHP或其他程序语言不同,默认情况下,javascript的字符替换只替换第一个出 现的匹配的字符.

  1. <script>  
  2. var  nospace =  "I dont need spaces" .replace( " " , "_" );  
  3. alert(nospace);    //I_dont need spaces   - Only first occurence   
  4. var  nospace =  "I dont need spaces" .replace(/ /g, "_" );  
  5. alert(nospace);    //I_dont_need_spaces   
  6. </script> 

 7.parseInt 函数

parseInt 用来将一个字符串转换为整数类型.这个函数能传入两个参数,第二个参数是指定多少进制的.这里十进制用 10 指定.如果没有指定进制,则parseInt函数自己会试图找到合适的进制.如果是这样,以0开头的字符串将会转换为8进制.

  1. <script>  
  2. var  str =  "017" ;  
  3. var  strInt = parseInt(str);       //strInt = 15  ;)   
  4. var  strInt = parseInt(str,10);    //strInt = 17   
  5. </script> 
阅读更多
个人分类: Javascript html CSS
想对作者说点什么? 我来说一句

Javascript中的陷阱大集合【译】

2011年11月14日 18KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭