我们拒绝平庸,拒绝随波逐流,拒绝墨守成规,让梦想不再流浪。

JavaScript编程军规

上一篇 / 下一篇  2014-06-23 15:48:47 / 个人分类:编程

军规条例

/j+A{(u:|vA0

军规一:【总是使用var来显示的声明变量】

3BGB:Av0?~0

军规二:【特性检测而非浏览器检测】51Testing软件测试网0S^2B kn fN_l

军规三:【尽量不要用全局变量】51Testing软件测试网Me%y"L Hv:_

军规四:【一定要记住闭包中局部变量是传引用,不是传值】

4\GS n)Bx0

军规五:【设置IDE格式化风格时,"{"不要另起一行】51Testing软件测试网a bM ]0DfsK

军规六:【"typeof null",返回的是"object",而不是"null",尽量用开源库的工具方法,如,jQuery.type(null) == "null"51Testing软件测试网U8l'^Q;L

军规七:【parseInt(string, radix)方法,接受两个方法,建议每次都提供radix51Testing软件测试网[*K#Uu8C3O-t

军规八:【在||&&、?表达式中,不要做一些改变状态的动作】51Testing软件测试网!J.y"zQ r5p _

军规九:【尽量用prototype定义方法,效率会高点】

Y2e8tc1O~-j0

军规十:【ifforwhile等语句一定要用{}包起来】51Testing软件测试网.U1l3@h j

军规十一:【对于回调处理,建议统一使用Deferred方式,可参考jQuery.Deferred

/w3Q#sM]6Cgd0

 51Testing软件测试网+E l i&`3fW

#J~ G A:v Y(@0
 

8ytrY _M e0u ih0

 51Testing软件测试网4Q9j7V8S?%vxlU$L

军规说明51Testing软件测试网_9N3QM8U/E+f\9Gh D

军规一:【总是使用var来显示的声明变量】51Testing软件测试网%E8v`gDj.mL

 

/xq c Xk0

军规二:【特性检测而非浏览器检测】

.en kH:? wO0

       if (document.getElementById) {

3\"O"W U {"E1|~w-~0

              var element = document.getElementById('MyId');51Testing软件测试网`$e[2e zOAx

       }else {51Testing软件测试网s:ce*Cl"M[

              alert('Your browser lacks the capabilities required to run this script!');51Testing软件测试网[Ni&M:@-\_&} UI

       }

1e$}HO'|7I0

  

n"L5Lu"|J0

军规三:【尽量不要用全局变量】

q:kd}7Z0

可以使用闭包方式隐藏变量51Testing软件测试网|h"z:P s.M#Y

                     var person = (function(){

7c!aIh*k0

                                         var name = "hhhh";

!X W0\]9Ci7U0

                                         return {

(`0?l*p.HU$Z0

                                                getName:function(){

s!WSgCCN ys0

                                                    return name;

0G^\ t;Ia)H.| l0

                                                }

m&B7b8m&U ~Y1k8Q0

                                            }51Testing软件测试网*s K h(J7gh

                                  })()51Testing软件测试网6{ Q.M;v4nSf&`

或加上一个命名空间

0?4? T9QC8L UD0

                     window.session = {};

K`2Rk7r`C0

                     session.name = "hhh";51Testing软件测试网$xj1~7}'vG3P R

 51Testing软件测试网;ihT%|]

军规四:【一定要记住闭包中局部变量是传引用,不是传值】51Testing软件测试网c$X)\$CE!I#h WFK9K

错误代码:

Z]s6O8ug0

              var arr = [];51Testing软件测试网,q8S.@ ]t0rv],B

              for ( var i = 0; i < 10; i++) {51Testing软件测试网$zN*RTQ5Nv@(?)?

                     arr[i] = function() {

`r'pT\ h0

                           console.log(i);

_7n'J:Goz%iY0

                     };51Testing软件测试网'WF L][#W7Z

              }

3E;c t Z {W/q'w0

      

#G{xRN2s0

              arr[3]();51Testing软件测试网+b?u1?2@ C:fd

输出:1051Testing软件测试网}sEj^:\!A'F

正确代码:

!S?%u4?u x0

              var arr = [];51Testing软件测试网2T-@3_$N#[2^S

              for ( var i = 0; i < 10; i++) {51Testing软件测试网!AT&|$N6e K!Z

                     arr[i] = (function(k) {

8Z%R"rD0p$B|Yf:D0

                           return function() {

D6i)RaJ)u?\*HP0

                                  console.log(k);51Testing软件测试网HI.j'`4FJr w

                           };51Testing软件测试网,|;j![!Gm)X

                     })(i);

.J f DcPEa0

              }

D8mn)O'G0

              arr[3]();

biDGL+v0

输出:3

u @9s}o^)@2B1|0

 51Testing软件测试网%p R,|7j3L-J

军规五:【设置IDE格式化风格时,"{"不要另起一行】

$t:Qa8wwL c0

格式化错误的代码:51Testing软件测试网|j t0L)_

              function(){

Y4` H;FJ:o"N$I0

                     return 51Testing软件测试网0Or5B3f5L$t juBT

                     {51Testing软件测试网 e!p/m^%k Geiyx

                           name:"hhh"51Testing软件测试网TK&QhP q7QC r@,|[

                     }51Testing软件测试网DG*iZIr

              }

?T ak%JUQI6C0

返回:undefined51Testing软件测试网@9m-G'|]

 

G n@J%k.ZX0

军规六:【"typeof null",返回的是"object",而不是"null",尽量用开源库的工具方法,如,jQuery.type(null) == "null"

1@*lz(K6F"W5b2i]0

 

V/u k3h&z!seM7]K'd0

军规七:【parseInt(string, radix)方法,接受两个方法,建议每次都提供radix51Testing软件测试网3YSt#DC_}

 

ER^MM/O0

军规八:【在||&&、?表达式中,不要做一些改变状态的动作】

n(tV} R| Sj0

              var isLogin = false;

5W"B,y?%n$hu0

              // 如果没有登录,则登录,这行代码很炫,但很不易读,有些人会认为这行是无用代码,直接删了51Testing软件测试网ej,e6L;G

              isLogin || login();

9h7`K#v!g9_0WW0

              isLogin "":login();

CH/x^:ARbfv0

 

9w!QS A2BI'`0

                       51Testing软件测试网/A4L,HyvOX$G*YeK

军规九:【尽量用prototype定义方法,效率会高点】

R f%p @B }|1v-~9l,DR0

              // 写法一:51Testing软件测试网Ew+['d4q2Tc6p

              var Person = function() {

Z7t/j]"P0

                     return {51Testing软件测试网y EoJ!Gs

                           name : "",51Testing软件测试网!vdS/K1e$agn

                           say : function() {

^Ooc&yvPS0

                                  alert("hello " + name);

,xf5sJp0

                           }51Testing软件测试网6y m@3Q [1?Y

                     };

F0ia*oL3NRo0

              };51Testing软件测试网_ Z[ PZ!@ S|~ z

              51Testing软件测试网*],bm)p"W+uy

              // 写法二:51Testing软件测试网mJLT+F1EQ

              var Person = function() {51Testing软件测试网1Bdg7Rk-pG?

                     return {

"Qd7j|%]Z)oGL#xl0

                           name : ""51Testing软件测试网M {uI6RJ'B

                     }

.`nV8H-Up0

              };51Testing软件测试网_9pu*m H S2_R:[

             

,V9g:U7] Jt0

              Person.prototype.say = function() {

SP X \,{0

                     alert("hello " + name);

XBU?b%~ S:es0

              };

2I| A\+F0

 

+{|;N-_Z0

军规十:【ifforwhile等语句一定要用{}包起来】51Testing软件测试网:p D1z&[O9Q"S

 

军规十一:【对于回调处理,建议统一使用Deferred方式,可参考jQuery.Deferred

0U'Em H;V4v0

TAG:

 

评分:0

我来说两句

日历

« 2024-04-21  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 109541
  • 日志数: 89
  • 图片数: 1
  • 文件数: 15
  • 建立时间: 2013-03-01
  • 更新时间: 2018-08-23

RSS订阅

Open Toolbar