最近在看JavaScript高级程序设计,看到可维护代码的编写,作一下笔记与总结,方便之后查看。css
boolean
用 is
开头类型透明也就是在变量定义的时候能够知道变量的类型
主要有如下三种方式:算法
初始化变量浏览器
var found = false; // boolean var count = -1; // number
缺点:不能使用在函数声明中的函数参数(如今经过ES6中的函数参数初始化解决)编辑器
使用匈牙利标记法 o
表示对象,s
表示字符串...函数
var bFound; // boolean var iCount; // int
缺点:代码难以阅读prototype
使用类型注释 类型注释放到变量名右边,初始化前面设计
var found /*:Boolean*/ = false; var count /*:int*/ = -1;
缺点:不能使用js
多行注释code
经过动态修改样式类,而不是修改特定样式对象
// 不建议写法 element.style.color = 'red'; element.style.backgroundColor = 'blue'; // 建议写法 // css .dit{ color: red; background-color: blue; } // js element.className = 'edit';
有如下几条原则:事件
任何事件处理程序都应该处理事件,而后将处理转交给应用逻辑
// 不建议写法 function handleKeyPress(event){ if(event.keyCode === 13){ var target = event.target; var value = 5 * parseInt(target.value); if(value > 10){ document.getElementById('id').style.display = 'block'; } } } // 建议写法 // 好处:若是我点击鼠标也执行相同逻辑,那么直接调用validateValue就能够了 // 应用逻辑 function validateValue(value){ value = 5 * parseInt(value); if(value > 10){ document.getElementById('id').style.display = 'block'; } } // 事件处理程序 function handleKeyPress(event){ if(event.keyCode === 13){ var target = event.target; validateValue(target.value); } }
简单点说就是否是你本身的建立或者维护的某个对象,他的对象和方法,不能修改
具体说:
最多建立一个全局变量,其余对象或函数保存在其中,其中有个概念叫作命名空间
命名空间就是指用来放置页面功能的对象
// 命名空间 let YAHOO = {}; YAHOO.util.Dom YAHOO.util.Event ....
判断一个是否为null
若是直接比较是使用过分的,而且因为比较不充分可能致使错误,
因此在判断一个值的类型的时候要与指望的类型进行比较,而非不被指望的那些
// value 指望一个Array if(value !== null){ // do something.... } // 建议 if(value instanceof Array){ // do something.... }
下面列举一下判断数据类型的方法
typeof
instanceof
typeof
undefined
,使用typeof
,不要直接===
判断,若是函数没有声明,那么会报错Object.prototype.toString.call
let ts = Object.prototype.toString; ts.call([]) === '[Object Array]'; // true ts.call(123) === '[Object Number]'; // true ts.call({}) === '[Object Object]'; // true ....
使用常量能够避免魔术字符串,也能够帮助构建国际化
建议使用常量的几种状况: