【javascript模式】Chapter2: 基本 技巧

1 尽量少用全局变量,最好一个应用程式只有一个全局变量
  隐含全局变量(不使用var声明)与明确定义的全局变量区别:
  (1)使用var创建的全局变量(在函数外部声明)不能用delete删除
  (2)不使用var创建的隐含全局变量可以删除
这表明隐含全局变量严格来讲并不是真正的变量,而是全局对象的属性,属性可以通过delete操作符删除,但是变量不可以

2 获取全局对象
   var global = (function() {
       return this;
   })


3 单一var模式: 只是用一个var在函数顶部进行变量声明,是一种很有用的模式
   使用一个var关键字声明由逗号分开的多个变量,同时初始化变量
var a=1,b=2,sum=a+b,myobject={};


4 "提升": javascript中,只要变量是在同一个范围(同一函数)里, 就视为已经声明,哪怕是在变量声明前就是用,无论在哪里,效果等同于在函数顶部声明。
在每个函数中仅仅使用一个var变量声明,这有助于在一个地方查看所有变量,可以有效防范变量提升导致的错误。

5 HTMLCollection是实时的,动态的,因此使用for循环的时候,最好是将数组的长度缓存起来
for (var i=0, max=myarray.length; i<max; i++ )

逐步减少至0,这样通常更快,同0比较比同数组长度的比较更有效率

6 for-in循环应该用来比较非数组对象,因为他会将原型中的属性也会枚举出来,即对象的全部属性
当遍历对象属性来过滤遇到原型链的属性是,可以使用hasOwnProperty()来判断。他不包含原型链中的属性

  1. for(var i in man) {
  2.     if(man.hasOwnProperty(i)) {
  3.         man[i]
  4.     }
  5. }

另一种方法,使用Object.prototype.hasOwnProperty.call(man,i);

7 使用 === !==

8 避免使用eval

9 parseInt,每次使用需要指定进制参数
   另一种将字符串转换成数字的办法,Number("08"),这种方法比parseInt快很多,parseInt是解析而不是简单得转换,“08 hello”,出parseInt返回一个数值外,其他方法都会失败并返回“NaN”

原文地址:https://www.cnblogs.com/xiaolei1314/p/3436489.html