• 【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”

  • 相关阅读:
    Python 资源大全中文版
    python支持mysql
    angularjs集成requirejs
    javascript中的浮点数运算
    魔术方法__get()、__set()和__call()的用法
    PHP事件机制
    Elasticsearch索引mapping的写入、查看与修改(转)
    Java Socket 通信实例
    性能测试相关(TPS/RT/PV等)(转)
    使用Nginx实现灰度发布(转)
  • 原文地址:https://www.cnblogs.com/xiaolei1314/p/3436489.html
Copyright © 2020-2023  润新知