Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

除开特定变量以外,声明变量必须加上 var 关键字。当你没有写 var, 变量就会暴露在全局上下文中, 这样很可能会和现有变量冲突. 另外, 如果没有加上, 很难明确该变量的作用域是什么, 变量也很可能像在局部作用域中, 很轻易地泄漏到 Document 或者 Window 中, 所以务必用 var 去声明变量。(eason:我觉得还要注意的一点是js没有不像java一样有默认的块作用域,对var更准确的理解,是在当前作用域里查找该标志符,如果没有,则在当前作用域里注册该标志符)

...

Code Block
languagejs
title错误的写法
FS = {};
FR = {};
contentPane = {};

...

Code Block
languagejs
title正确的写法
window.FS = {};
window.FR= {};
window.contentPane = {};

 

错误:

for(var i = 0; i < 3; i++){
        var  i = 0;//导致死循环
 }

...

FR.ajax()函数会对data自动进行编码,避免了参数编码错误错误:

Code Block
languagejs
title不推荐的写法
$.ajax({
      url : "http://www.baidu.com",
      data: {"keywords": "中文"},
       success : function() {
           // do something
       }
  });

...


Code Block
languagejs
title正确的写法

...

FR.ajax({
    url : "http://www.baidu.com",
    data: {"keywords": "中文"},
     success : function() {
         // do something
     }
});

 

私有方法以下划线(_)开头做标记。

以下划线标记私有方法增加代码的可读性。错误:

Code Block
languagejs
title不推荐的写法
FR.Button = FR.extend(FR.Widget, 

...

{ 
    defaultConfig: function () {
        return {cls : 'fr-btn'};
    }
};

...

Code Block
languagejs
title正确的写法
FR.Button = FR.extend(FR.Widget, 

...

{ 
    _defaultConfig: function () {
        return {cls : 'fr-btn'};
    }
};

 

不能使用new Date("2014-01-01")这样的日期函数。改用new Data(年,月,日,时,分,秒)。

前者的函数存在浏览器兼容问题,低版本的IE是不支持的。错误:

Code Block
languagejs
title错误的写法
var date = new Date("2014-01-01");

...

Code Block
languagejs
title正确的写法
var date = new Date(2014, 1,1);