zoukankan      html  css  js  c++  java
  • 养成良好的编程习惯

    全局变量

    在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(这两者是相同的),他们只会看到全局作用域,可以避免本地变量污染

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

  • 相关阅读:
    Mysql查看所有表的数据量
    Mysql存储过程查询数据插入别的表里。
    MYSQL查看最大连接数和修改最大连接数
    Centos7 安装字体库&中文字体
    docker-部署elk-6.1.3
    confluence输入数学公式之mathjax
    elasticsearch安装ansj分词器
    mongorestore 一次踩雷
    let‘s encrypt之nginx-https没有小锁
    微服务预想
  • 原文地址:https://www.cnblogs.com/ljuyi/p/6014215.html
Copyright © 2011-2022 走看看