(摘录) 《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. VB中后台打开Excel文件实现代码

    某些时候需要打开Excel文件来获取或者写入数据,但又不希望跳出打开的Excel文件窗口,可以用下面的代码: Dim eb As New excel.Application, wb as excel. ...

  2. Activity关闭另一个Acitivity

    1.ActivityA跳转到ActivityB 2.ActivityB跳转到ActivityC 3.ActivityC结束掉自己的同时结束ActivityB 在ActivityB中声明一个自己的参数i ...

  3. HTML5 canvas绘制线条曲线

    HTML5 canvas入门 线条例子 1.简单线条 2.三角形 3.填充三角形背景颜色 4.线条颜色以及线条大小 5.二次贝塞尔曲线 6.三次贝塞尔曲线 <!doctype html> ...

  4. zrender源码分析1:总体结构

    开始 zrender(Zlevel Render) 是一个轻量级的Canvas类库,这里是GitHub的网址 点我, 类似的类库有Kinetic.JS.EaselJS. 但貌似都没有zrender好用 ...

  5. Javascript基本概念(语句和函数)

    语句 for语句 for语句中的初始化表达式,控制表达式和循环后表达式都是可选的,将这三个表达式省略,就会创建一个无线循环. ECMAScript中不存在块级作用域,因此在循环内容部定义的变量也可以在 ...

  6. hdu 5126 stars cdq分治套cdq分治+树状数组

    题目链接 给n个操作, 第一种是在x, y, z这个点+1. 第二种询问(x1, y1, z1). (x2, y2, z2)之间的总值. 用一次cdq分治可以将三维变两维, 两次的话就变成一维了, 然 ...

  7. 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法(android)

    final double x_pi = 3.14159265358979324 * 3000.0 / 180.0; public GeoPoint bd_encrypt(GeoPoint point) ...

  8. Android 之 MediaPlayer类

    在Android中通常用MediaPlayer来播放一些媒体文件,对于音频文件来说只需直接使用MeidaPlayer结合几句代码即可,但是对于视频文件来说稍微复杂一些.单独的MediaPlayer只能 ...

  9. python 自定义信号处理器

    说明: 这里所说的信号与kill 命令中的信号指的是同一个. #!/usr/bin/python #!coding:utf-8 import sys,time,signal def now(): re ...

  10. 计算机图形学--旋转变换(java)

    import java.awt.Color; import java.awt.Frame; import java.awt.Graphics; import java.awt.event.Window ...