移动端代码规范小结(一)

 

1、js中use strict的作用域范围只在当前脚本有效:比如1.js里面调用2.js的方法,1.js里面声明"use strict",而2.js里面没有声明,则该调用为正常模式调用,并非严格模式;

2、location.replace与location.href的区别在于:location.replace方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,你不能通过“前进”和“后退”

来访问已经被替换的URL;location.href方法前进后退按钮不会失效。

3、由于浏览器对于跨域的限制,js不能本地保存跨域的图片(拿不到图片的base64);

4、设置和获取disable, checked, selected等属性时,请使用推荐的prop方法来替代attr方法(备注:有些浏览器上通过attr(“checked”, “checked”)无效);

5、对于each函数,return true同等于continue, return false同等于break;

6、对于页面的命名里不应该包含大写字母,eg. isNotAllowed.html(备注:有些浏览器不能识别大写字母);

7、data方法在jQuery里面和zepto里面实现形式是不一样。

  jQuery里面的data方法存储的数据是jQuery自己保存的。jQ也会获取一次data-*的数据,但获取之后后续的处理全在jQ的对象里面了,不会在HTML里面体现。

  zepto里面data方法存储的数据会同时写到元素自身的data-*上面的。会在html里面体现。获取以data-*开头的属性值时,请使用$(...).data(*)函数。

  原生JS获取的时候是属性名是去掉data-,然后变成小驼峰形式,即前面的值应该用dom.dataset.someValue来获取。反过来也一样,即通过dom.dataset.someName设置

的值,在HTML上会表示成data-some-name="xx"

  另外,data-*的命名规则按照规范,应该是全小写,词语间划分使用"-",比如data-some-value=""。

8、 在for…in…循环内,最好用hasOwnProperty函数来判断属性是否为真正属性,以免处理了无效值;

9、假如某个dom节点同个函数中被多次反复使用,可以手动把此值缓存,避免多次查找dom树。例如var a = $(body);

10、在使用Date对象生成实例的时候,要注意使用标准写法,不然某些浏览器会报错。 不要习惯使用 new Date("YYYY-MM-DD HH:mm:SS"),因为这个格式并不是标准的格式,

但是当前webkit是支持的。长个心眼,如果以后遇到其他浏览器报错或者是webkit放弃了这个支持的时候,方便查找原因;

11、由于JS没有块级作用域,因此如果在if块和else块里面都用到var i作为计数器,则可能报重复定义的错误;

12、关于变量声明,Var a=b=0;相当于 var a; a= b; b = 0;b变成了全局变量;

13、for(var key in str) 中变量key在for里面的声明和在for外面的声明是一样的,因为变量声明会被提前到当前作用域的最前面;

 

posted @ 2016-02-25 11:35  爱笑的蛙蛙  阅读(488)  评论(0编辑  收藏  举报