js 细节总结

js 细节总结

js 细节总结

作用域


javascript 没有提供块级作用域。更好的方式是在函数的开头部分声明所有变量。


自动插入分号:


javascript有一个机制,它试图通过自动插入分号来修正有缺损的程序。千万不要依靠它,它可能会掩盖更为严重的错误。


return

{

status:true

};

这看起来是要返回一个包含status成员元素的对象。可是,自动插入分号让它变成了返回undefined. 自动插入分号导致程序被误解却没有任何警告提醒。如果把{ 放在上一行的尾部而不是下一行的头部就可以避免该问题:

return {

status:true

};


保留字:

下面的单词在javascript 里被保留:

abstract   boolean   break   byte   case   catch   char   class   const   continue   debugger   defaultdelete   do   double   else   enum export   extends   false   final   finally   float   for   function

goto   if   implements    import   in   instanceof   int   interface   long   native   new   null

package   private   protected   public   return   short   static   super   switch   synchronized

this   throw   throws   transient   true   try   typeof   var   volatile   void   while   with


这些单词中的大多数并没有在语言中使用。

它们不能被用来命名变量或参数。当保留字被用作对象字面量的键值时,它们必须被引号括起来。它们不能被用在点表示法中,所以有时必须使用括号表示法:


var method;   //ok

var class;   //非法

object = {box: value};  //ok

object = {case: value};  //非法

object = {'case': value};  //ok

object.box = value;  //ok

object.case = value;  //非法

object['case'] = value;  //ok


parseInt


它是一个将字符串转换为整数的函数。如果该字符串第一个字符是0,那么该字符将被基于八进制而不是十进制来求值。在八进制中,8和9不是数字,所以parseInt('08'); paseInt('09'); 产生的结果都是0,这个错误导致了程序解析日期和时间时出现问题。parseInt 可以接受一个基数作为参数,如此一来 parseInt('08',10); 结果为8。建议你总是提供这个基数参数。


+

+运算符可以用于加法运算或字符串连接。如果你打算用+ 去做加法运算,请确保两个运算数都是整数。

否则,它会把两个运算数都转为字符串连接起来。

var a = 1;var b =2;var c = '0';

console.log(a + b);  //3

console.log(a + c);  //10


浮点数

二进制的浮点数不能正确地处理十进制的小数,因此 0.1 + 0.2 不等于  0.3 。幸运的是,浮点数中的整数运算是精确的,所以小数表现出来的错误可以通过指定精度来避免。


举例来说,美元可以通过乘以100 而全部转成美分,然后就可以准确地将美分相加。它们的和可以除以100来转换回美元。当人们计算货币时当然会期望得到精确的结果。


NaN


  NaN === NaN;   //false   NaN != NaN;   //true


javascript 提供了一个isNaN函数可以辨别数字与NaN:

isNaN(NaN);  //true

isNaN(0);   //false

isNaN('oop');   //true

isNaN('0');    //false


伪数组

javascript没有真正的数组。

typeof 运算符不能辨别数组和对象,要判断一个值是否为数组,你还须检查它的constructor属性。

if(my_value && typeof my_value === 'object' && my_value.constructor === Array) {......}