(摘录) 《Javascript 24条最佳实践》

自己一直偏向于实用主义,不是学院派,不是学究派,只讲究把东西能够很好的做出来,但经过一段时间的开发工作当自己总结出来一些东西时,觉得挺有收获,但岂知已早有很多前人早都写的更完美,总结的更好;所以咱们做开发的,务必要统筹好实践与理论、自研与拿来的关系。理论与实践的关系,咱们从小的毛邓都有学习,只是细化下来,到咱们开发人员身上该如何做的问题。我主张在做项目中发现自身技术点的不足,而后抽出时间吃透理论,第二天再投入开发,以更好的更自信的对项目开发负责,如此交替进行,一来项目开发过程中的经验会更加牢固与自信的沉淀下来;二来建立在项目研发需求基础上的技术积累也将更加完善。

来吧,抽时间看看这些原则与方法,不用自己再去造轮子,记住就行,理解更好。

原文标题与地址:

《24 JavaScript Best Practices for Beginners》

http://net.tutsplus.com/tutorials/JavaScript-ajax/24-JavaScript-best-practices-for-beginners/

1.用===取代==

“If two operands are of the same type and value, then === produces true and !== produces false.” – JavaScript: The Good Parts

简单来讲就是

var a="123"

var b=123

if(a==b)

{

alert("a==b"); //right

}

if(a===b)

{

alert("a===b");//wrong

}

2.不建议使用Eval

因赋予字符串太大的权限,会有安全隐患。So Avoid it!

alert(eval("1+3")); //return 4

3.切勿使用易引起歧义的表达式缩写

如:if(2 + 2 === 4) return 'nicely done';

或 if(someVariableExists)

x = false

anotherFunctionCall();

4.使用JsLint 来规范Javascript 代码

http://www.jslint.com/ 毫不夸张的讲,处女座的人千万不要用,后果很严重。

5.请在页面底部引用Script 脚本

这个原则很多老鸟也不太在乎,但坦白来讲,我们都要具有工匠精神才能够做出优秀的产品不是吗?、

原因很简单,因为页面的加载是按顺序来的,如果写在页面顶端,会延迟页面的显示效果,破坏用户体验。

6.请在For循环外部声明变量

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

var container = document.getElementById('container');  //超级破费的写法,亲,还是写外面吧。

container.innerHtml += 'my number: ' + i;

console.log(i);

}

7.有比手拼字符串更快的方法吗?

var arr = ['item 1', 'item 2', 'item 3', ...];

var list = '<ul><li>' + arr.join('</li><li>') + '</li></ul>';

返回一个字符串。该字符串是通过把 数组 的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入 分隔符 字符串而生成的。
var arr = [1,2,3,4,5];
var str = arr.join("-");
alert(str);// 弹出 1-2-3-4-5

8. 尽量减少全局变量的使用

否则你的代码在与其它程序进行通信时面临很多风险。

9. 老声常谈,在需要的地方尽量写些注释

10. 持续优化与改进

当用户浏览器的JavaScript被禁用时,您老人家写的网站还能正常使用不? 这种坑爹的问题,还真没尝试过。

11. 不要向SetInterval或者SetTimeOut中传递字符串,用方法名称取代吧。

12. 不要使用With语句

with (being.person.man.bodyparts) {

arms = true;

legs = true;

}

而应该用

var o = being.person.man.bodyparts;

o.arms = true;

o.legs = true;  //原因是用With的话,后期变量的赋值会较麻烦。

13. 使用{}来取代New Object()来创建对象

var o = new Object();

o.name = 'Jeffrey';

o.lastName = 'Way';

o.someFunction = function() {

console.log(this.name);

}

var o = {

name: 'Jeffrey',

lastName = 'Way',

someFunction : function() {

console.log(this.name);

}

};  //取代的原因是{}更加健壮。

14. 使用 [ ] 取代New Array()

var a = new Array();

a[0] = "Joe";

a[1] = 'Plumber';

应该:

var a = ['Joe','Plumber'];

15. 当需要定义一长列变量时,可以使用逗号取代Var。

var someItem = 'some string';

var anotherItem = 'another string';

var oneMoreItem = 'one more string';

应该是:

var someItem = 'some string',

anotherItem = 'another string',

oneMoreItem = 'one more string';

16. 别忘记在句尾加分号

18. “for in”语句来遍历对象中的元素

for(key in object) {

if(object.hasOwnProperty(key) {

...then do something...

}

}

19. 使用Firbug的Timer特性来优化你的代码

function TimeTracker(){

console.time("MyTimer");

for(x=5000; x > 0; x--){}

console.timeEnd("MyTimer");

}

24. 去掉Language,没必要,并且已经被告弃用多时,恩?怎么没人告诉我

<script type="text/javascript" language="javascript">

</script>

(译) 《Javascript 24条最佳实践》的更多相关文章

  1. 译《Time, Clocks, and the Ordering of Events in a Distributed System》

    Motivation <Time, Clocks, and the Ordering of Events in a Distributed System>大概是在分布式领域被引用的最多的一 ...

  2. Note: Time clocks and the ordering of events in a distributed system

    http://research.microsoft.com/en-us/um/people/lamport/pubs/time-clocks.pdf 分布式系统的时钟同步是一个非常困难的问题,this ...

  3. Time, Clocks, and the Ordering of Events in a Distributed System

    作者:Leslie Lamport(非常厉害的老头了) 在使用消息进行通信的分布式系统中,使用物理时钟对不同process进行时间同步与事件排序是非常困难的.一是因为不同process的时钟有差异,另 ...

  4. 【SaltStack官方版】—— Events&Reactor系统—EVENT SYSTEM

    Events&Reactor系统 EVENT SYSTEM The Salt Event System is used to fire off events enabling third pa ...

  5. Method and apparatus for providing total and partial store ordering for a memory in multi-processor system

    An improved memory model and implementation is disclosed. The memory model includes a Total Store Or ...

  6. mysqldump: Couldn't execute 'show events': Cannot proceed because system tables used by Event Schedu

    最近将老版本的mysql 实例倒入 percona 5.5.30,使用的是线上的全备,结果将mysql 库下的表也倒入了,这下可悲剧了,备份报错. 没办法,将mysql库下的数据倒出来,清空,再倒入p ...

  7. Paxos Made Simple(译)

    The Paxos algorithm, when presented in plain English, is very simple. 我叫Leslie Lamport,我最屌. 1. 简介 用于 ...

  8. Paxos Made Simple

    Paxos一致性算法——分布式系统中的经典算法,论文本身也有一段有趣的故事.一致性问题是分布式系统的根本问题之一,在论文中,作者一步步的加强最初一致性问题(2.1节提出的问题)的约束条件,最终导出了一 ...

  9. 《Paxos Made Simple》翻译

    1 Introduction 可能是因为之前的描述对大多数读者来说太过Greek了,Paxos作为一种实现容错的分布式系统的算法被认为是难以理解的.但事实上,它可能是最简单,最显而易见的分布式算法了. ...

  10. 分布式系统(Distributed System)资料

    这个资料关于分布式系统资料,作者写的太好了.拿过来以备用 网址:https://github.com/ty4z2008/Qix/blob/master/ds.md 希望转载的朋友,你可以不用联系我.但 ...

随机推荐

  1. sql的集合运算

    表的加减法 union:使用union 对表进行假发(并集)运算, union等集合运算符通常都会去除重复记录. select shohin_id, shohin_mei from shohin un ...

  2. linux安装php5.3

    安装php的依赖包 [root@localhost admin]# unzip libxml2-2.7.8.tar.zip [root@localhost admin]#tar zvxf libxml ...

  3. Flink Program Guide (6) -- 窗口 (DataStream API编程指导 -- For Java)

    窗口(Window) 本文翻译自文档Windows ----------------------------------- Flink使用窗口的概念,根据element的时间戳或者其他指标,将可能无限 ...

  4. php curl封装类

    一个php curl封装的类,减少代码量,简化采集工作.这个类也是我工作的最常用的类之一.这里分享给大家.配合上phpquery,十分好用. <?php namespace iphp\core; ...

  5. Three.js基础

    Three.js基础探寻一 Three.js基础探寻一   1.webGL 一种网络标准,定义了一些较底层的图形接口. 2.Three.js 一个3Djs库,webGL开源框架中比较优秀的一个.除了w ...

  6. 上传python包到PyPI

    一.前言 由于项目需要将API响应的XML内容解析成python对象,写了一个简单的xml转python的库,因为功能简单,细节处理也不好,文档也没有,没想也不好意思上传到pypi. 后来由于多个不同 ...

  7. jQuery学习-事件之绑定事件(六)

    在jQuery中,为了屏蔽event对象在各浏览器中的差异性,它使用了自定的Event对象,如下:  1 jQuery.Event = function( src, props ) {  2      ...

  8. listview优化

    http://www.2cto.com/kf/201108/99928.html 项目用到ListView,由于要用到ImageView,图片源不是在资源里面的,没法使用资源ID,因此无法直接使用Si ...

  9. oracle 和informix 的基础区别

    1:查看表空间 select b.file_name 物理文件名, b.tablespace_name 表空间, b.bytes/1024/1024 大小M, (b.bytes-sum(nvl(a.b ...

  10. hdu 2604 Queuing(矩阵快速幂乘法)

    Problem Description Queues and Priority Queues are data structures which are known to most computer ...