手机版

谈Javascript编程风格

时间:2021-08-29 来源:互联网 编辑:宝哥软件园 浏览:

道格拉斯克洛克福特是Javascript的权威,而Json格式是他的发明。

去年11月,他做了一个演讲,讲的是什么是好的Javascript编程风格。

我强烈推荐这篇演讲,不仅有助于学习Javascript,还能让你感到舒服,因为Crockford演讲幽默,不时让观众会心一笑。

接下来,根据这篇演讲和Crockford写的代码规范,我来总结一下Javascript编程风格’。

所谓‘编程风格’是指编写代码的风格规则。不同的程序员往往有不同的编程风格。

有人说编译器规范叫‘语法’,程序员必须遵守;编译器忽略的叫做‘编程风格’,程序员可以自由选择。这种说法不完全正确。程序员可以自由选择自己的编程风格,但是好的编程风格有助于写出质量更高、错误更少、维护更容易的程序。

所以要明确的是,选择‘编程风格’不应该基于个人爱好、熟悉程度、打字工作量等因素,而应该考虑如何让代码尽可能清晰易读,减少错误。你选择的不是你喜欢的风格,而是能明确表达你意图的风格。这对于Javascript这种语法自由度高、设计不完整的语言尤为重要。

第一,大括号的位置

大多数编程语言使用大括号({})来表示块。有许多不同的方法来写左大括号的位置。

有两个最受欢迎的。一种是在开始处用花括号开始一个新行:

Block{.}另一个是左大括号跟在关键字后面:

一般来说,这两种写作方法都可以接受。但是,Javascript应该使用后者,因为Javascript会自动在句尾添加分号,导致一些不易察觉的错误。

返回{ key:value};上述代码的初衷是返回一个对象,但实际上它返回的是undefined,因为Javascript会在return语句后自动添加一个分号。为了避免这种错误,需要写如下:

返回{key :值;};因此,

规则1:不要在一个块的开头开始一行新的花括号。

第二,括号

括号在Javascript中有两个函数,一个是调用函数,另一个是不同值的分组。我们可以用空格来区分这两种括号。

规则2:调用函数时,函数名和左括号之间没有空格。

规则3:函数名和参数序列之间没有空格。

规则4:所有其他语法元素和左括号之间有一个空格。

根据上面的规则,下面的写法是不规范的:

foo (bar)返回(a b);if(a===0){ 0.}函数foo(b){ 0.}函数(x){ 0.}

三.分号

分号表示语句的结尾。大多数情况下,如果省略了句尾的分号,Javascript会自动添加。

Var a=1相当于

var a=1;所以有人主张句尾省略分号。但麻烦的是,如果下一行的第一个字符(token)是以下五个字符中的一个,则Javascript不会在前一行的末尾添加分号:“(”、“[”、“/”、“”、“-”。

x=y(函数(){ 0.})();上述代码相当于

x=y(函数(){ 0.})();因此,

规则5:不要在句尾省略分号。

四.带语句

用可以减少代码的编写,但会造成混乱。

带(o){ foo=bar;}上面的代码可以有四个运行结果:

o.foo=baro . foo=o . bar;foo=barfoo=o.bar这四种结果都可能发生,这取决于是否定义了不同的变量。因此,

规则6:不要使用with语句。

五、平等和严格平等

Javascript有两个“相等”运算符:“相等”(==)和“严格相等”(===)。

因为“equality”运算符会自动转换变量类型,导致许多意外情况:

0==' '//true 1==true//true 2==true//false 0==' 0 '/true false==' false '/false/false==' 0 '/true ' \ t \ r \ n '==0//true因此,

规则7:不要使用“相等”(==)运算符,只使用“严格相等”(===)运算符。

第六,报表的组合

有些程序员追求简洁,喜欢为了不同的目的组合语句。例如,原始语句是

a=b;如果(a).}他喜欢写:如下

如果(a=b){ 0.}虽然句子短了一行,但可读性大大降低,会造成误读,让别人误以为这一行代码的意思是:

if(a===b){ 0.}另一种情况是,一些程序员喜欢在同一行中分配多个变量:

var a=b=0;他认为这一行代码相当于

var a=0,b=0;其实不是,它的真实效果如下:

b=0;var a=b;因此,

规则8:不要将不同目的的语句组合成一行。

七.变量声明

Javascript会自动将变量声明“提升”到代码块的头部。

if(!o){ var o={ };}相当于

var o;if(!o){ o={ };}为了避免可能出现的问题,最好将变量声明放在代码块的开头。

对于(var i.) {.}最好写成:

风险值I;对于(I.) {.}因此,

规则9:所有变量声明都放在函数的头部。

规则10:所有功能在使用前都已定义。

八、全局变量

也许Javascript最大的语法缺陷是全局变量对于任何代码块都是可读可写的。这对代码的模块化和重用是非常不利的。

规则11:避免使用全局变量;如果一定要用,就用大写字母来表示变量名,比如UPPER_CASE。

九、新命令

Javascript使用new命令从构造函数生成一个新对象。

var o=new myObject();这种方法的问题是,一旦忘记添加new,myObject()中的这个关键字将指向全局对象,这将导致绑定到此的所有变量都变成所有变量。

规则12:不要使用新命令,而是使用Object.create()命令。

如果必须使用new,为了防止出错,最好从视觉上区分构造函数和其他函数。

规则13:构造函数的函数名大写,首字母大写;其他函数名,全部用小写首字母。

十、自增自减算子

放在变量前面或后面的自增()和自减(-)运算符返回的值不同,容易出错。

事实上,所有运算符都可以用'=1 '代替。

x相当于

x=1;代码变得更加清晰。有一个可笑的例子,下面的片段出现在一个Javascript函数库的源代码中:

x;x;程序员忘记了有一种更简单、更合理的书写方式:

x=2;因此,

规则14:不要使用自增()和自减(-)运算符,而是使用=和-=运算符。

XI。阻碍

如果循环和判断的代码体中只有一行,则Javascript允许该块省略大括号。

以下代码

如果(a)b();c();初衷可能是

if(a){ b();c();}然而,实际效果是

if(a){ b();} c();因此,

规则15:总是用大括号来表示块。

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

版权声明:谈Javascript编程风格是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。