【仅供内部供应商使用,不提供对外解答和培训】
【仅供内部供应商使用,不提供对外解答和培训】
语句必须都有分号结尾,除了for, function, if, switch, try, while。
如果仅依靠语句间的隐式分隔, 有时会很麻烦,你自己更能清楚哪里是语句的起止。而且有些情况下, 漏掉分号会很危险。
MyClass.prototype.myMethod = function() { return 42; } //这里没有分号 (function() { // 做一些初始化的事情 })();
上面这段语句会报 JavaScript 错误 。上的语句会解释成, 一个函数带一匿名函数作为参数而被调用, 返回42后, 又一次被"调用", 这就导致了错误。
var arr = [1,2,3,];//数组最后一个逗号不必要存在 FR.Ajax({ url:'http://someurl', data:{'paraA':'aa','paraB':'bb'},//作为一个json对象,这里的逗号是多余的,且在IE下可能抛错 });
var arr = [1, 2, 3]; var ajaxConfig = { url:'http://someurl', data:{'paraA':'aa','paraB':'bb'} };
所有的循环体和判断体都需要用"{}"括起来。
if (condition)statement;
if (condition) { statement; }
不要使用with, void, eval。
eval() 会让程序执行的比较混乱, 当 eval() 里面包含用户输入的话就更加危险. 可以用其他更佳的, 更清晰, 更安全的方式写你的代码, 所以一般情况下请不要使用 eval(). 当碰到一些需要解析序列化串的情况下(如, 计算 RPC 响应), 使用 eval 很容易实现。
使用 with 让你的代码在语义上变得不清晰. 因为 with 的对象, 可能会与局部变量产生冲突, 从而改变你程序原本的用义。
var obj = new Object(); var arr = new Array();
var obj = {}; var arr = [];
for-in循环只用于object/map/hash的遍历,而不要用于数组的遍历。
对 Array 用 for-in 循环有时会出错. 因为它并不是从 0 到 length - 1 进行遍历, 而是所有出现在对象及其原型链的键值. 下面就是一些失败的使用案例:
function printArray(arr) { for (var key in arr) { print(arr[key]); } } printArray([0,1,2,3]); // 这个正常工作 var a = new Array(10); printArray(a); // 这个就会出错了
var arr = ['aa', 'bb', 'cc', 'dd']; for (var el in arr) { // do something with el; }
var arr = ['aa', 'bb', 'cc', 'dd']; for (var i = 0, len = arr.length; i < len; i ++) { var el = arr[i]; // do somthing with el; }
除开特定变量以外,声明变量必须加上 var 关键字。
当你没有写 var, 变量就会暴露在全局上下文中, 这样很可能会和现有变量冲突. 另外, 如果没有加上, 很难明确该变量的作用域是什么, 变量也很可能像在局部作用域中, 很轻易地泄漏到 Document 或者 Window 中, 所以务必用 var 去声明变量。(eason:我觉得还要注意的一点是js没有不像java一样有默认的块作用域,对var更准确的理解,是在当前作用域里查找该标志符,如果没有,则在当前作用域里注册该标志符)
FS = {}; FR = {}; contentPane = {};
window.FS = {}; window.FR= {}; window.contentPane = {};
使用FR.ajax()函数替代$.ajax()函数,不要使用FR.get()、FR.post()、$.get()和$.post()。
FR.ajax()函数会对data自动进行编码,避免了参数编码错误
$.ajax({ url : "http://www.baidu.com", data: {"keywords": "中文"}, success : function() { // do something } });
FR.ajax({ url : "http://www.baidu.com", data: {"keywords": "中文"}, success : function() { // do something } });
私有方法以下划线(_)开头做标记。
以下划线标记私有方法增加代码的可读性。
FR.Button = FR.extend(FR.Widget, { defaultConfig: function () { return {cls : 'fr-btn'}; } };
FR.Button = FR.extend(FR.Widget, { _defaultConfig: function () { return {cls : 'fr-btn'}; } };
不能使用new Date("2014-01-01")这样的日期函数。改用new Data(年,月,日,时,分,秒)。
前者的函数存在浏览器兼容问题,低版本的IE是不支持的。
var date = new Date("2014-01-01");
var date = new Date(2014, 0,1);
3 Comments
Anonymous
javascript的月份数字是从0开始的,写错了你
richie-季明华
修改了
Anonymous
不能使用new Date("2014-01-01")这样的日期函数。改用new Data(年,月,日,时,分,秒)。
应该是new date