javascript优化--04高质量编码
库和API的设计:
- 在参数设计中保持好的习惯:如顺序,width,height;top,right,bottom,left;如命名;
- 将undefined看作没有值而不要表示非特定的值;
- 在允许0,空字符串等为有效参数的地方,不要通过真值测试(||)来实现参数默认值;
使用//var x === undefined ? 0 : x;
- 接受多参数对象的时候可以选用选项对象;
- 在处理多个预设值的时候可以用extend
function extend(target, source) {
if(source) {
for(var key in source) {
var val = source[key];
if(typeof val !== 'undefined') {
target[key] = val;
}
}
}
return target;
}
function Alert(parent, opts) {
opts = extend({
width: 320,
height: 240
}, opts);
opts = extend({
x: (parent.width/2) - (opts.width),
y: (parent.height/2) - (opts.height),
title: 'Alert',
icon: 'info',
modal: false
}, opts);
extend(this, opts);
}
var alert = new Alert({width:1200,height:1000},{title:'child',modal:'true'}); - 尽可能使用无状态的API;
并发:
- 不要阻塞I/O事件队列;
- 使用嵌套或命名的回调函数顺序地执行多个异步操作:
db.lookupAsync('url', function(url) {
downloadAsync(url, function(text) {
console.log('contents of ' + url + ': ' + text);
})
})
--------------优化---------------
db.lookupAsync('url', downloadURL); function downloadURL(url) {
downloadAsync(url, function(text) {
showContents(url, text);
})
}
function showContent(url, text) {
console.log('contents of ' + url + ': ' + text);
}
---------------优化-------------
db.lookupAsync('url', downloadURL);
function downloadURL(url) {
downloadAsync(url, showContents.bind(null, url));
}
function showContents(url, text) {
console.log('contens of ' + url + ': ' + text);
}在过多嵌套的回调函数和尴尬的命名的非嵌套回调函数之间取得平衡;
- 当心丢失错误:
- 表现
- 异步的API不会抛出异常,因为当一个异步的错误发生时,没有一个明显的执行上下文抛出异常;
- 异步API倾向于将错误表示为回调函数的特定参数,或使用一个附加的错误处理回调函数;
- 表现
javascript优化--04高质量编码的更多相关文章
- javascript优化--01高质量编码
javascript的浮点数: Javascript的数字都是双精度浮点数: 64位编码数字: 能表达53位精度的整数: 进行位运算时会隐式地转化为32位整数(0,1序列)后计算: 浮点数运算可能会有 ...
- javascript优化--02高质量编码
方法调用: 通常某个对象调用方法查找该方法并将该对象作为该方法的接受者(this): 使用call自定义接受者 可以调用在给定对象中不存在的方法: 定义高阶函数,允许使用者给回调函数指定接受者: 使用 ...
- javascript优化--03高质量编码
使用Object的直接量实例构造轻量级的字典: 使用for/in循环,使用对象字面量来构建,并确保不增加Object.prototype属性来导致for/in循环:(考虑到兼容性,如Array.pro ...
- (第一章)改善JavaScript,编写高质量代码。
根据<编写高质量代码改善JavaScript程序的188个建议>这本书,来记录我目前所了解的建议方式. 建议1:警惕Unicode乱码 根据ECMA标准规定JavaScript语言可以使用 ...
- (第二章)改善JavaScript,编写高质量代码。
建议34:字符串是非值操作 var a = "javascript"; var b = a; b = b.toUpperCase(); alert(a); //javascript ...
- 编写高质量JavaScript代码的68个有效方法
简介: <Effective JavaScript:编写高质量JavaScript代码的68个有效方法>共分为7章,分别涵盖JavaScript的不同主题.第1章主要讲述最基本的主题,如版 ...
- 《Offer一箩筐》一份高质量「简历」撰写指南,望打扰!!
「MoreThanJava」 宣扬的是 「学习,不止 CODE」. 如果觉得 「不错」 的朋友,欢迎 「关注 + 留言 + 分享」,文末有完整的获取链接,您的支持是我前进的最大的动力! Hi~ 这里是 ...
- 深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点
深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 2011-12-28 23:00 by 汤姆大叔, 139489 阅读, 119 评论, 收藏, 编辑 才华横溢的 ...
- 高质量JavaScript代码书写基本要点
翻译-高质量JavaScript代码书写基本要点 by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/ ...
随机推荐
- Node.js 创建HTTP服务器(经过测试,这篇文章是靠谱的T_T)
Node.js 创建HTTP服务器 如果我们使用PHP来编写后端的代码时,需要Apache 或者 Nginx 的HTTP 服务器,并配上 mod_php5 模块和php-cgi. 从这个角度看,整个& ...
- bc.34.B.Building Blocks(贪心)
Building Blocks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- JVM垃圾收集策略解析
地址:http://developer.51cto.com/art/201002/184385_all.htm
- js获取中国日期-农历
/* var bsYear; var bsDate; var bsWeek; var arrLen=8; //数组长度 var sValue=0; //当年的秒数 var dayiy=0; //当年第 ...
- Centos下安装mysql 总结
一.MySQL安装 Centos下安装mysql 请点开:http://www.centoscn.com/CentosServer/sql/2013/0817/1285.html 二.MySQL的几个 ...
- NYOJ 38布线问题
http://acm.nyist.net/JudgeOnline/problem.php?pid=38 布线问题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 南阳 ...
- 71 Query Rank Min Max Successor of BST
[本文链接] http://www.cnblogs.com/hellogiser/p/query-min-max-successor-of-bst.html [代码] C++ Code 12345 ...
- 【JAVA、C++】LeetCode 004 Median of Two Sorted Arrays
There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two ...
- codeforces 472C.Make It Nondeterministic 解题报告
题目链接:http://codeforces.com/problemset/problem/472/C 题目意思:给出 n 个 people(从第1行往下数,编号依次为1,2,...,n),每 个 p ...
- 基于gitosis的Git云端服务器配置
(本文需要自己实践,由于时间关系,我仅仅是做了整理和快速的练习,至于笔记中的账号和ip域名都是我参考文章中的.如果读者有任何问题欢迎留言和发邮件到luoquantao@126.com) 硬件:云端阿里 ...