您当前的位置:首页 > 互联网教程

js里有几种编码规范

发布时间:2025-05-22 05:38:14    发布人:远客网络

js里有几种编码规范

一、js里有几种编码规范

1、编码规范就是指导如何编写和组织代码的一系列标准。通过阅读这些编码规范,你可以知道在各个公司里代码是如何编写的。

2、一个主要的原因是:每个人写代码的方式都是不同的。我可能喜欢这么写,而你喜欢用另一种方法写。如果我们只处理自己的代码,这样并没有什么问题。但如果有成千上万的程序员同时在一个代码库上面工作呢?如果没有规范,事情很快会变得一团糟。代码规范可以让新人迅速的熟悉相关的代码,并且也能写出让其他程序员简单易懂的代码。

3、号称是“最合理的编写 JavaScript代码的方式”。

4、Airbnb的这个代码规范可能是互联网最流行的 JavaScript代码规范了,它在 Github上足有 6万 star,几乎覆盖了 JavaScript的每一项特性。

5、只有遵守了这里的规则,一个 JavaScript源文件才能被称为“Google Style”。很霸气,我行我素,同时也被不少公司沿用。

6、Idiomatic JavaScript Style Guide

7、符合语言习惯的 JavaScript代码规范。

8、不管有多少人参与,不管是否在同一个代码库,所有的 JavaScript代码风格都必须像同一个人写的。

9、另一个很强势的同时也很流行的 JavaScript编码规范。它的野心也很大,不止想规范 JavaScript,其它语言也都想管起来。

10、地球上所有的代码都像同一个人写的?想想让人觉得不寒而栗啊……

11、JavaScript Standard Style Guide

12、一个功能强大的 JavaScript代码规范,自带 linter和自动代码纠正,无需配置,自动格式化代码。可以在编码早期就发现代码中的低级错误。这个代码规范被很多知名公司所采用,比如 NPM、GitHub、mongoDB等。

13、(这个 Github地址霸气到不行。)

14、jQuery是多少人入门前端的好帮手啊,可惜如今只剩回忆了。它们的这个规范算是很早期的一个代码规范了,主要是针对它们的代码以及早期 JavaScript版本进行规定。

15、以上所述是小编给大家介绍的5种JavaScript编码规范,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

二、javascript中的正则表达式有什么规范

字母、数字、汉字、下划线、以及后边章节中没有特殊定义的标点符号,都是"普通字符"。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。

举例1:表达式"c",在匹配字符串"abcde"时,匹配结果是:成功;匹配到的内容是:"c";匹配到的位置是:开始于2,结束于3。(注:下标从0开始还是从1开始,因当前编程语言的不同而可能不同)

举例2:表达式"bcd",在匹配字符串"abcde"时,匹配结果是:成功;匹配到的内容是:"bcd";匹配到的位置是:开始于1,结束于4。

--------------------------------------------------------------------------------

一些不便书写的字符,采用在前面加"\"的方法。这些字符其实我们都已经熟知了。

还有其他一些在后边章节中有特殊用处的标点符号,在前面加"\"后,就代表该符号本身。比如:^,$都有特殊意义,如果要想匹配字符串中"^"和"$"字符,则表达式就需要写成"\^"和"\$"。

这些转义字符的匹配方法与"普通字符"是类似的。也是匹配与之相同的一个字符。

举例1:表达式"\$d",在匹配字符串"abc$de"时,匹配结果是:成功;匹配到的内容是:"$d";匹配到的位置是:开始于3,结束于5。

--------------------------------------------------------------------------------

1.3能够与'多种字符'匹配的表达式

正则表达式中的一些表示方法,可以匹配'多种字符'其中的任意一个字符。比如,表达式"\d"可以匹配任意一个数字。虽然可以匹配其中任意字符,但是只能是一个,不是多个。这就好比玩扑克牌时候,大小王可以代替任意一张牌,但是只能代替一张牌。

任意一个字母或数字或下划线,也就是 A~Z,a~z,0~9,_中任意一个

包括空格、制表符、换页符等空白字符的其中任意一个

小数点可以匹配除了换行符(\n)以外的任意一个字符

举例1:表达式"\d\d",在匹配"abc123"时,匹配的结果是:成功;匹配到的内容是:"12";匹配到的位置是:开始于3,结束于5。

举例2:表达式"a.\d",在匹配"aaa100"时,匹配的结果是:成功;匹配到的内容是:"aa1";匹配到的位置是:开始于1,结束于4。

--------------------------------------------------------------------------------

1.4自定义能够匹配'多种字符'的表达式

使用方括号 [ ]包含一系列字符,能够匹配其中任意一个字符。用 [^ ]包含一系列字符,则能够匹配其中字符之外的任意一个字符。同样的道理,虽然可以匹配其中任意一个,但是只能是一个,不是多个。

匹配"a","b","c"之外的任意一个字符

匹配"A"~"F","0"~"3"之外的任意一个字符

举例1:表达式"[bcd][bcd]"匹配"abc123"时,匹配的结果是:成功;匹配到的内容是:"bc";匹配到的位置是:开始于1,结束于3。

举例2:表达式"[^abc]"匹配"abc123"时,匹配的结果是:成功;匹配到的内容是:"1";匹配到的位置是:开始于3,结束于4。

--------------------------------------------------------------------------------

前面章节中讲到的表达式,无论是只能匹配一种字符的表达式,还是可以匹配多种字符其中任意一个的表达式,都只能匹配一次。如果使用表达式再加上修饰匹配次数的特殊符号,那么不用重复书写表达式就可以重复匹配。

使用方法是:"次数修饰"放在"被修饰的表达式"后边。比如:"[bcd][bcd]"可以写成"[bcd]{2}"。

表达式重复n次,比如:"\w{2}"相当于"\w\w";"a{5}"相当于"aaaaa"

表达式至少重复m次,最多重复n次,比如:"ba{1,3}"可以匹配"ba"或"baa"或"baaa"

表达式至少重复m次,比如:"\w\d{2,}"可以匹配"a12","_456","M12344"...

匹配表达式0次或者1次,相当于{0,1},比如:"a[cd]?"可以匹配"a","ac","ad"

表达式至少出现1次,相当于{1,},比如:"a+b"可以匹配"ab","aab","aaab"...

表达式不出现或出现任意次,相当于{0,},比如:"\^*b"可以匹配"b","^^^b"...

举例1:表达式"\d+\.?\d*"在匹配"It costs$12.5"时,匹配的结果是:成功;匹配到的内容是:"12.5";匹配到的位置是:开始于10,结束于14。

举例2:表达式"go{2,8}gle"在匹配"Ads by goooooogle"时,匹配的结果是:成功;匹配到的内容是:"goooooogle";匹配到的位置是:开始于7,结束于17。

--------------------------------------------------------------------------------

1.6其他一些代表抽象意义的特殊符号

一些符号在表达式中代表抽象的特殊意义:

与字符串开始的地方匹配,不匹配任何字符

与字符串结束的地方匹配,不匹配任何字符

匹配一个单词边界,也就是单词和空格之间的位置,不匹配任何字符

进一步的文字说明仍然比较抽象,因此,举例帮助大家理解。

举例1:表达式"^aaa"在匹配"xxx aaa xxx"时,匹配结果是:失败。因为"^"要求与字符串开始的地方匹配,因此,只有当"aaa"位于字符串的开头的时候,"^aaa"才能匹配,比如:"aaa xxx xxx"。

举例2:表达式"aaa$"在匹配"xxx aaa xxx"时,匹配结果是:失败。因为"$"要求与字符串结束的地方匹配,因此,只有当"aaa"位于字符串的结尾的时候,"aaa$"才能匹配,比如:"xxx xxx aaa"。

举例3:表达式".\b."在匹配"@@@abc"时,匹配结果是:成功;匹配到的内容是:"@a";匹配到的位置是:开始于2,结束于4。

进一步说明:"\b"与"^"和"$"类似,本身不匹配任何字符,但是它要求它在匹配结果中所处位置的左右两边,其中一边是"\w"范围,另一边是非"\w"的范围。

举例4:表达式"\bend\b"在匹配"weekend,endfor,end"时,匹配结果是:成功;匹配到的内容是:"end";匹配到的位置是:开始于15,结束于18。

一些符号可以影响表达式内部的子表达式之间的关系:

左右两边表达式之间"或"关系,匹配左边或者右边

(1).在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰

(2).取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到

举例5:表达式"Tom|Jack"在匹配字符串"I'm Tom, he is Jack"时,匹配结果是:成功;匹配到的内容是:"Tom";匹配到的位置是:开始于4,结束于7。匹配下一个时,匹配结果是:成功;匹配到的内容是:"Jack";匹配到的位置时:开始于15,结束于19。

举例6:表达式"(go\s*)+"在匹配"Let's go go go!"时,匹配结果是:成功;匹配到内容是:"go go go";匹配到的位置是:开始于6,结束于14。

举例7:表达式"¥(\d+\.?\d*)"在匹配"$10.9,¥20.5"时,匹配的结果是:成功;匹配到的内容是:"¥20.5";匹配到的位置是:开始于6,结束于10。单独获取括号范围匹配到的内容是:"20.5"。

--------------------------------------------------------------------------------

在使用修饰匹配次数的特殊符号时,有几种表示方法可以使同一个表达式能够匹配不同的次数,比如:"{m,n}","{m,}","?","*","+",具体匹配的次数随被匹配的字符串而定。这种重复匹配不定次数的表达式在匹配过程中,总是尽可能多的匹配。比如,针对文本"dxxxdxxxd",举例如下:

"\w+"将匹配第一个"d"之后的所有字符"xxxdxxxd"

"\w+"将匹配第一个"d"和最后一个"d"之间的所有字符"xxxdxxx"。虽然"\w+"也能够匹配上最后一个"d",但是为了使整个表达式匹配成功,"\w+"可以"让出"它本来能够匹配的最后一个"d"

由此可见,"\w+"在匹配的时候,总是尽可能多的匹配符合它规则的字符。虽然第二个举例中,它没有匹配最后一个"d",但那也是为了让整个表达式能够匹配成功。同理,带"*"和"{m,n}"的表达式都是尽可能地多匹配,带"?"的表达式在可匹配可不匹配的时候,也是尽可能的"要匹配"。这种匹配原则就叫作"贪婪"模式。

在修饰匹配次数的特殊符号后再加上一个"?"号,则可以使匹配次数不定的表达式尽可能少的匹配,使可匹配可不匹配的表达式,尽可能的"不匹配"。这种匹配原则叫作"非贪婪"模式,也叫作"勉强"模式。如果少匹配就会导致整个表达式匹配失败的时候,与贪婪模式类似,非贪婪模式会最小限度的再匹配一些,以使整个表达式匹配成功。举例如下,针对文本"dxxxdxxxd"举例:

"\w+?"将尽可能少的匹配第一个"d"之后的字符,结果是:"\w+?"只匹配了一个"x"

为了让整个表达式匹配成功,"\w+?"不得不匹配"xxx"才可以让后边的"d"匹配,从而使整个表达式匹配成功。因此,结果是:"\w+?"匹配"xxx"

举例1:表达式"<td>(.*)</td>"与字符串"<td><p>aa</p></td><td><p>bb</p></td>"匹配时,匹配的结果是:成功;匹配到的内容是"<td><p>aa</p></td><td><p>bb</p></td>"整个字符串,表达式中的"</td>"将与字符串中最后一个"</td>"匹配。

举例2:相比之下,表达式"<td>(.*?)</td>"匹配举例1中同样的字符串时,将只得到"<td><p>aa</p></td>",再次匹配下一个时,可以得到第二个"<td><p>bb</p></td>"。

--------------------------------------------------------------------------------

表达式在匹配时,表达式引擎会将小括号"()"包含的表达式所匹配到的字符串记录下来。在获取匹配结果的时候,小括号包含的表达式所匹配到的字符串可以单独获取。这一点,在前面的举例中,已经多次展示了。在实际应用场合中,当用某种边界来查找,而所要获取的内容又不包含边界时,必须使用小括号来指定所要的范围。比如前面的"<td>(.*?)</td>"。

其实,"小括号包含的表达式所匹配到的字符串"不仅是在匹配结束后才可以使用,在匹配过程中也可以使用。表达式后边的部分,可以引用前面"括号内的子匹配已经匹配到的字符串"。引用方法是"\"加上一个数字。"\1"引用第1对括号内匹配到的字符串,"\2"引用第2对括号内匹配到的字符串……以此类推,如果一对括号内包含另一对括号,则外层的括号先排序号。换句话说,哪一对的左括号"("在前,那这一对就先排序号。

举例1:表达式"('|")(.*?)(\1)"在匹配"'Hello',"World""时,匹配结果是:成功;匹配到的内容是:"'Hello'"。再次匹配下一个时,可以匹配到""World""。

举例2:表达式"(\w)\1{4,}"在匹配"aa bbbb abcdefg ccccc 111121111 999999999"时,匹配结果是:成功;匹配到的内容是"ccccc"。再次匹配下一个时,将得到 999999999。这个表达式要求"\w"范围的字符至少重复5次,注意与"\w{5,}"之间的区别。

举例3:表达式"<(\w+)\s*(\w+(=('|").*?\4)?\s*)*>.*?</\1>"在匹配"<td id='td1' style="bgcolor:white"></td>"时,匹配结果是成功。如果"<td>"与"</td>"不配对,则会匹配失败;如果改成其他配对,也可以匹配成功。

.匹配任何单个字符 []匹配集合中的字符

[^]匹配不在集合中的字符?匹配前一个样式0或1次

*匹配前一个样式0或更多次+匹配前一个样式1或更多次

|匹配前一个或后一个样式&匹配前一个样式0或更多次

#匹配前一个样式1或更多次{} Group char to form one pattern

() Group and remember\下一个字符直接用原意(只对a-z之外的字符有效)

<匹配词的开始>匹配词的结尾

\x##匹配ASCII码为##(16进制)的字符\N###匹配ASCII码为##(10进制)的字符

\o###匹配ASCII码为##(8进制)的字符\a匹配\a

\b匹配\b\f匹配\f

\r匹配 0x13(回车)\t匹配 0x09(跳格)

\v匹配\v\e匹配 Esc(0x05)

\n匹配0x10(换行)\s匹配空格(回车,换行,制表符,空格)

\S匹配非空格(!\s)\w整字匹配

\W非整字匹配\d匹配数字

\D匹配非数字\U匹配大写字母

\L匹配小写字母\C后面开始大小写敏感

\c后面开始大小写不敏感\#匹配前面定义的组(#: 1-9, a-f)

三、javascript变量名和函数对象的命名规范是什么

javascript命名规范没有明确的定义吧,主要怎么命名让自己看起来爽,团队看起来爽,所以主要还是看你们自己怎么约定的。

2.类的命名使用骆驼命名规则,例如:

3.常量必须在对象(类)或者枚举变量的前部声明。枚举变量的命名必须要有实际的意义,并且其成员必须使用骆驼命名规则或使用大写:

var NodeTypes={ Element:1, DOCUMENT:2}

4.简写单词不能使用大写名称作为变量名:

getInnerHtml(), getXml(), XmlDocument

5.方法的命令必须为动词或者是动词短语:

6.公有类的命名必须使用混合名称(mixedCase)命名。

7.CSS变量的命名必须使用其对应的相同的公共类变量。

8.私有类的变量属性成员必须使用混合名称(mixedCase)命名,并前面下下划线(_)。例如:

var MyClass=function(){ var _buffer; this.doSomething=function(){};

9.变量如果设置为私有,则前面必须添加下划线。

this._somePrivateVariable= statement;

10.通用的变量必须使用与其名字一致的类型名称:

setTopic(topic)//变量 topic为 Topic类型的变量

11.所有的变量名必须使用英文名称。

12.变量如有较广的作用域(large scope),必须使用全局变量;此时可以设计成一个类的成员。相对的如作用域较小或为私有变量则使用简洁的单词命名。

13.如果变量有其隐含的返回值,则避免使用其相似的方法:

getHandler();//避免使用 getEventHandler()

14.公有变量必须清楚的表达其自身的属性,避免字义含糊不清,例如:

,而非 MseEvtHdlr。请再次注意这条规定,这样做得的好处是非常明显的。它能明确的表达表达式所定义的含义。

15.类/构造函数可以使用扩展其基类的名称命名,这样可以正确、迅速的找到其基类的名称:EventHandlerUIEventHandlerMouseEventHandler基类可以在明确描述其属性的前提下,缩减其命名:MouseEventHandler as opposed to MouseUIEventHandler.

术语“get/set”不要和一个字段相连,除非它被定义为私有变量。前面加“is”的变量名应该为布尔值,同理可以为“has”,“can”或者“should”。

术语“compute”作为变量名应为已经计算完成的变量。

术语“find”作为变量名应为已经查找完成的变量。

术语“initialize”或者“init”作为变量名应为已经实例化(初始化)完成的类或者其他类型的变量。UI(用户界面)控制变量应在名称后加控制类型,例如: leftComboBox, TopScrollPane。复数必须有其公共的名称约定(原文:Plural form MUST be used to name collections)。带有“num”或者“count”开头的变量名约定为数字(对象)。重复变量建议使用“i”,“j”,“k”(依次类推)等名称的变量。补充用语必须使用补充词,例如: get/set, add/remove, create/destroy, start/stop, insert/delete, begin/end, etc.能缩写的名称尽量使用缩写。避免产生歧义的布尔变量名称,例如:isNotError, isNotFound为非法错误类建议在变量名称后加上“Exception”或者“Error”。方法如果返回一个类,则应该在名称上说明返回什么;如果是一个过程,则应该说明做了什么。