• 养成良好的编程习惯


    全局变量

    在js代码不同的作用域中,都可以访问到全局变量,这就降低了代码的安全性,所以应尽量减少全局变量的使用。

    在js中全局变量的声明方式有很多种,可以用var,这是最标准的生命方式,但是如果出现下面这种写法,执行结果也不会出错:

    myname='john';
    console.log(myname); //john

    这种书写方式相当于:

    window.myname='john';

    即:给全局对象(window)定义了一个属性,注意,myname是window的一个属性,也就是说通过语句:

    delete myname;

    可以删除掉这个值,即

    console.log(myname); // undefined

    但是,一个变量是没有办法通过delete方法删除的。

    需要注意的是,如果一个变量没有经过定义就进行运算符运算,则也相当于给全局对象添加了一个属性。即:

    function fn(){
    	a="123";
    }
    fn();
    console.log(a);  //123
    delete(a);
    console.log(a);  //error:a is not defined

    所以,我们在编写代码时,应尽可能减少全局变量的使用,并且按照严格的定义规范定义变量。

    for循环

    在for循环中我们总会忽略掉一些细微的问题,这在程序的运行结果上不会产生错误的结果,但是会大大降低代码的执行速度,这种问题在代码量十分庞大的程序中表现的十分明显,看下面这段代码:

    for(var i=0;i<arr.length;i++){}

    这段代码在执行的过程中,每次判断条件是否成立时,都要重新获取一下arr的长度,造成了很不必要的时间浪费,所以应该采用下面这种写法:

    for(var i=0,max=arr.length;i<max;i++){}

    这样,再循环过程中就只获取了一次arr的长度,大大减少时间成本。

    避免隐式类型转换,进行比较值和表达式类型时用 === 或 !==

    减少eval()的使用

    使用eval会使被执行的代码被篡改,在setInterval()和setTimeout()中若将函数写成字符串形式会产生和eval()相同的效果,所以要尽量写成函数名。

    eval()还有一个弊端:eval()会干扰作用域链,可以访问和修改它外部作用域中的变量,如果使用Function或new Function(这两者是相同的),他们只会看到全局作用域,可以避免本地变量污染

    其他书写规范,比如空格、缩进、变量命名采用驼峰命名法等不再赘述

  • 相关阅读:
    Java Evaluate Reverse Polish Notation(逆波兰式)
    UVA 11427
    iOS8互动的新通知
    Codeforces 32E Hide-and-Seek 乞讨2关于镜面反射点 计算几何
    error: png.h not found.
    JAVA反射机制
    java24 手写服务器最终版本
    java23 XML
    java22
    java21 封装Response:
  • 原文地址:https://www.cnblogs.com/ljuyi/p/6014215.html
Copyright © 2020-2023  润新知