《改善javascript程序的188个建议》摘抄

1:不要使用汉字命名。


2:最大限度的避免使用全局变量;使用以下方法减少全局变量污染:

var My = {};
My.name = {
    "first-name" : " first ",
    "last-name" : " last "
};
My.work = {
    number : 123,
    one : {
        name : " one ",
        time : "2012-9-14 12:55",
        city : "beijing"
    },
    two : {
        name : "two",
        time : "2012-9-12 12:42",
        city : "shanghai"
    }
};

使用My.work['one']['name']调用某一个变量。


3:并且尽量在函数体的顶部声明所有将要用到的变量。


4:浮点运算是不精确的,整数运算是精确的;eg: 0.1+0.2=0.3000000000000000000000004; (1+2)/10=0.3


5:检测数据类型方法,

方法一:typeof

返回number,string,boolean,object,function,undefined其中的一种,null返回object而不是null;不能够检测复杂的数据类型;

function type(o){
    return (o===null)?"null":(typeof o);
}

方法二:constructor属性

value.constructor,构造函数的属性值;

null和defined

var t=null;
alert(typeof t);		//object
alert(t&&t.constructor);	//null
var m=undefined;
alert(typeof m);		//undefined

数值直接量要加括号:

alert((10).constructor)

方法三:toString()

以字符串形式返回[object class];

var d=new Date();
var m=Object.prototype.toString;		
alert(m.apply(d));

5:正确使用parseInt

parseInt('123abc');		//123
parseInt('1.23');		//1
parseInt('.123');		//NaN

对parseInt加上基数参数:

parseInt('10', [radix]);	//将‘10’按照radix(进制)转换为10进制整数;

6:句尾加分号;长句换行不要形成语义,避免自动加分号产生错误;


7:正确使用NaN和isFinite

NaN参与运算结果为NaN;

NaN !== NaN;

isNaN(NaN)==  true;

isFinite会筛除掉NaN和无穷大;

isFinite会试图将运算数转换为数字;

使用自定义函数来判断是否为数字:

var isNumber=function isNumber(value){
	return typeof value === 'number'&&isFinite(value);
}

8:使用===和!==,不要使用== 和 !=

===会先判断类型是否相同,然后判断值,都相同时为true


9:不要使用++和--


10:不要信任hasOwnProperty,因为其有可能被清空;


11:避免使用eval();


12:避免使用continue;


13:switch中case记得加上break防止贯穿;


14:不要省略块标志;


15:推荐使用第二种,理解函数就是数值的概念;

                //No1
		function abcd(){
			alert(1);
		}
		abcd();
		//No2
		var f=function abc(){
			alert(1);
		}
		f();


16:不要使用类型构造器,也不要使用new


17:少用函数迭代;


--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------Chapter 1 ends-------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


18:连接字符串开销很大,尽量避免多次连接大的字符串;


19:load 会在所有内容包括图片加载完成后触发,DOMContentLoaded 在文档结构加载完毕的时候触发,比load早触发;


20:beforeunload在离开当前页面之前触发;





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值