(译) 《Javascript 24条最佳实践》
(摘录) 《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条最佳实践》的更多相关文章
- 译《Time, Clocks, and the Ordering of Events in a Distributed System》
Motivation <Time, Clocks, and the Ordering of Events in a Distributed System>大概是在分布式领域被引用的最多的一 ...
- 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 ...
- Time, Clocks, and the Ordering of Events in a Distributed System
作者:Leslie Lamport(非常厉害的老头了) 在使用消息进行通信的分布式系统中,使用物理时钟对不同process进行时间同步与事件排序是非常困难的.一是因为不同process的时钟有差异,另 ...
- 【SaltStack官方版】—— Events&Reactor系统—EVENT SYSTEM
Events&Reactor系统 EVENT SYSTEM The Salt Event System is used to fire off events enabling third pa ...
- 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 ...
- mysqldump: Couldn't execute 'show events': Cannot proceed because system tables used by Event Schedu
最近将老版本的mysql 实例倒入 percona 5.5.30,使用的是线上的全备,结果将mysql 库下的表也倒入了,这下可悲剧了,备份报错. 没办法,将mysql库下的数据倒出来,清空,再倒入p ...
- Paxos Made Simple(译)
The Paxos algorithm, when presented in plain English, is very simple. 我叫Leslie Lamport,我最屌. 1. 简介 用于 ...
- Paxos Made Simple
Paxos一致性算法——分布式系统中的经典算法,论文本身也有一段有趣的故事.一致性问题是分布式系统的根本问题之一,在论文中,作者一步步的加强最初一致性问题(2.1节提出的问题)的约束条件,最终导出了一 ...
- 《Paxos Made Simple》翻译
1 Introduction 可能是因为之前的描述对大多数读者来说太过Greek了,Paxos作为一种实现容错的分布式系统的算法被认为是难以理解的.但事实上,它可能是最简单,最显而易见的分布式算法了. ...
- 分布式系统(Distributed System)资料
这个资料关于分布式系统资料,作者写的太好了.拿过来以备用 网址:https://github.com/ty4z2008/Qix/blob/master/ds.md 希望转载的朋友,你可以不用联系我.但 ...
随机推荐
- iOS集成支付宝
需要企业和支付宝签约这个是需要审核的[3天左右 以邮件形式告知你] 使用支付宝进行一个完整的支付功能,大致有以下步骤: 1>先与支付宝签约,获得商户ID(partner)和账号ID(sell ...
- 绝对好文C#调用C++DLL传递结构体数组的终极解决方案
C#调用C++DLL传递结构体数组的终极解决方案 时间 2013-09-17 18:40:56 CSDN博客相似文章 (0) 原文 http://blog.csdn.net/xxdddail/art ...
- 《C++ Primer Plus 6th》读书笔记 - 第九章 内存模型和名称空间
1. 单独编译 1.1 头文件中常包含的内容: 函数原型 使用#define或const定义的符号常量 结构声明 类声明 模板声明 内联声明 1.2 只需将源代码文件加入到项目中,而不用加入头文件.这 ...
- 设计模式之观察者模式(Java)
设计模式(Design pattern)是什么?它是一套由四人组(The Gang of Four, [1]的作者)总结出来的软件设计框架.其目的是为了提高代码的可重用性,增强系统的可维护性和代码的易 ...
- MySql 环境配置
关键词 MySQL 5.6.17 phpmyadmin [下载MySQL] MySQL Community Server MySQL社区版免费 注:需要oracle账户登录下载 [安装MySQ ...
- jquery ajax后台向前台传list 前台用jquery $.each遍历list
$.ajax({ type: 'post', url: xxx.action', dataType: 'text', success: function(data){ var dataObj=eval ...
- 管道通信之无名管道---pipe()
pipe()函数在子进程产生之前就应该存在. 父子进程之间只进行一次传递 /*============================================ > Copyright ( ...
- Cordova+Asp.net Mvc+GIS
Cordova+Asp.net Mvc+GIS跨平台移动应用开发实战1-系统初步搭建(附演示,apk,全部源码) 1.前言 身处在移动互联网的今天,移动应用开发炙手可热,身为程序猿的我们怎么能错过 ...
- Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Chinese_PRC_CI_AS" in the equal to operation.
Scenario : 这个问题是我的存储过程中用到临时表时发生的. 应该是sql server 服务器的排序规则 (SQL_Latin1_General_CP1_CI_AS ) 与数据库的排序规则(C ...
- jQuery学习-事件之绑定事件(六)
在jQuery中,为了屏蔽event对象在各浏览器中的差异性,它使用了自定的Event对象,如下: 1 jQuery.Event = function( src, props ) { 2 ...