Javascript编码规范
- 格式:docx
- 大小:36.09 KB
- 文档页数:16
fortify 安全编码规则javascriptFortify安全编码规则JavaScript是一种非常流行的JavaScript安全编码规范,对于那些对Web应用程序开发和安全感兴趣的开发人员来说,这是一种必须要了解的工具。
Fortify规则可以帮助开发人员创建更加安全和高效的Web应用程序。
在这篇文章中,我们将分步骤地介绍Fortify安全编码规则JavaScript,并讨论一些实现该规则的最佳实践。
第一步:防止跨站点脚本攻击(XSS)跨站点脚本攻击也称为XSS攻击,是一种通过将恶意脚本注入到Web应用程序中来利用其漏洞的攻击。
为了防止XSS攻击,Fortify规则建议使用编码来保护所有用户输入。
这可以通过使用encodeURIComponent()或encodeURI()函数来实现。
第二步:防止SQL注入攻击SQL注入攻击是一种利用Web应用程序的漏洞来进行的攻击,该攻击可以通过注入恶意SQL代码来获取或破坏数据库中的数据。
为了防止SQL注入攻击,Fortify规则建议使用参数化查询或存储过程,同时避免拼接字符串来构建SQL查询。
第三步:避免使用eval()函数eval()函数是一种动态生成JavaScript代码的函数,它可以使代码更加灵活,但是也可能导致一些安全问题。
eval()函数可以被恶意的攻击者利用来注入恶意代码。
为了防止这种攻击,Fortify规则建议避免使用eval()函数,并使用其他更加安全的方法来实现动态生成代码的需求。
第四步:禁止使用document.write()document.write()函数是一种向HTML文档动态添加内容的方法,但是它也可能导致一些安全问题。
如果攻击者能够注入恶意代码到document.write()函数中,那么这些代码就可能会被执行。
为了避免这种情况的发生,Fortify规则建议禁止使用document.write()函数,并使用其他更加安全的方法来动态向HTML文档添加内容。
阿里前端开发规范阿里前端开发规范包括代码、命名、HTML、CSS、JavaScript、图片方面的规范。
1. 代码规范:- 使用四个空格缩进,不使用制表符。
- 代码行长度不超过80个字符。
- 使用驼峰命名法,变量和函数名用小写开头,构造函数用大写开头。
- 使用严格相等运算符(===和!==)替代宽松相等运算符(==和!=)。
- 在条件表达式中,使用括号来提高可读性。
- 避免在循环中使用等号赋值(例如,for (var i = 0; i < array.length; i++))。
- 避免使用eval()函数。
2. 命名规范:- 文件名应该全部小写,可以包含破折号(-)或下划线(_)。
- 文件夹名应该全部小写,可以包含破折号(-)或下划线(_)。
- CSS文件名应该以.css结尾。
- JavaScript文件名应该以.js结尾。
3. HTML规范:- 使用两个空格缩进,不使用制表符。
- 使用双引号而不是单引号作为属性值的引号。
- 在自定义属性中使用小写字母和破折号(-)。
- 为所有非自闭合标签使用闭合标签。
- 避免在HTML标签中使用行内样式。
4. CSS规范:- 使用两个空格缩进,不使用制表符。
- 使用小写字母和破折号(-)作为选择器和属性名的命名方式。
- 为每个选择器之间使用空行分隔。
- 使用简写属性来减少代码量。
- 使用预处理器(如Less或Sass)来编写CSS。
5. JavaScript规范:- 使用两个空格缩进,不使用制表符。
- 使用分号作为语句的结束符号。
- 避免使用全局变量。
- 避免使用with语句。
- 使用模块化的开发方式,避免全局作用域污染。
6. 图片规范:- 使用有意义的命名来描述图片内容。
- 使用适当的格式和压缩技术来减小图片文件大小。
- 将页面上的图片引用写成相对路径。
以上是阿里前端开发规范的一些主要内容。
在实际开发中,遵循这些规范可以提高代码的可读性和可维护性,使团队成员之间更容易协同工作。
JavaScript开发规范要求作为一名开发人员(WEB前端JavaScript开发),不规范的开发不仅使日后代码维护变的困难,同时也不利于团队的合作,通常还会带来代码安全以及执行效率上的问题。
本人在开发工作中就曾与不按规范来开发的同事合作过,与他合作就不能用“愉快”来形容了。
现在本人撰写此文的目的除了与大家分享一点点经验外,更多的是希望对未来的合作伙伴能够起到一定的借鉴作用。
当然,如果我说的有不科学的地方还希望各路前辈多多指教。
下面分条目列出各种规范要求,这些要求都是针对同事编码毛病提出来的,好些行业约定的其它规范可能不会再提及。
1、保证代码压缩后不出错对于大型的JavaScript项目,一般会在产品发布时对项目包含的所有JavaScript文件进行压缩处理,比如可以利用Google Closure Compiler Service对代码进行压缩,新版jQuery已改用这一工具对代码进行压缩,这一般会去掉开发时写的注释,除去所有空格和换行,甚至可以把原来较长的变量名替换成短且无意义的变量名,这样做的目的是加快文件的下载速度,同时也减小网站访问带来的额外数据流量,另外在代码保护上也起到了一点点作用,至少压缩后的代码即使被还原还是没那么容易一下读懂的。
要想代码能正确通过压缩,一般要求语句都要以分号正常结束,大括号也要严格结束等,具体还要看压缩工具的要求。
所以如果一开始没有按标准来做,等压缩出错后再回去找错误那是浪费时间。
2、保证代码能通过特定IDE的自动格式化功能一般较为完善的开发工具(比如Aptana Studio)都有代码“自动格式”化功能,这一功能帮助实现统一换行、缩进、空格等代码编排,你可以设置自己喜欢的格式标准,比如左大括号{是否另起一行。
达到这个要求的目的在于方便你的开发团队成员拿你代码的一个副本用IDE自动格式化成他喜欢或熟悉的风格进行阅读。
你同事需要阅读你的代码,可能是因为你写的是通用方法,他在其它模块开发过程中也要使用到,阅读你的代码能最深入了解方法调用和实现的细节,这是简单API文档不能达到的效果。
js 常用编码方式
常用的 JavaScript 编码方式有以下几种:
1. ASCII 编码:ASCII(美国信息交换标准代码)是一个表示字符的标准编码方式,它定义了128个字符的编码,包括英文字母、数字、标点符号和控制字符等。
2. Unicode 编码:Unicode 是一个标准的字符集和编码方案,它定义了世界上所有字符的编码。
JavaScript 中的字符串是基于 Unicode 编码的。
3. UTF-8 编码:UTF-8 是一种可变长度的 Unicode 编码方式,它可以用来表示世界上所有字符。
UTF-8 编码使用一至四个字节来表示不同的字符。
4. Base64 编码:Base64 是一种用于将二进制数据转换为 ASCII 字符的编码方式。
它主要用于在文本协议中传输和存储二进制数据,比如在 HTML 中嵌入图片等。
5. URL 编码:URL 编码是一种将 URL 中的非 ASCII 字符转换为特殊字符序列的编码方式,以便在网络传输中进行安全和有效的传递。
6. JSON 编码:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它使用一种类似于 JavaScript 对象语法的文本格式来表示结构化数据。
JSON 编码可以将 JavaScript 对象转换为文本,并能够在不同的应用程序之间进行数据交换。
这些编码方式在 JavaScript 中都有对应的函数和方法来进行编码和解码操作,开发者可以根据实际需求选择适合的编码方式。
js获取字符串编码格式的方法摘要:一、引言二、JavaScript获取字符串编码格式的原理1.Unicode编码2.UTF-8编码3.GBK编码三、实现方法1.获取Unicode编码2.获取UTF-8编码3.获取GBK编码四、示例与应用五、总结正文:【引言】在JavaScript中,获取字符串的编码格式是一种常见的操作,这对于处理跨平台、多语言环境下的文本具有重要意义。
本文将详细介绍如何获取字符串的编码格式,并给出具体的实现方法。
【JavaScript获取字符串编码格式的原理】在JavaScript中,字符串的编码格式主要分为Unicode编码、UTF-8编码和GBK编码。
以下是这三种编码格式的简要介绍:1.Unicode编码:Unicode是一种字符编码标准,它为每个字符分配一个唯一的编码值。
JavaScript中的字符串都是使用Unicode编码表示的。
2.UTF-8编码:UTF-8是一种可变长度的编码方案,它将Unicode字符映射到UTF-8编码序列。
UTF-8编码具有向兼容性,可以正确表示JavaScript 中的字符串。
3.GBK编码:GBK是一种针对中文设计的编码方案,它将中文汉字映射到GBK编码序列。
在JavaScript中,可以使用GBK编码表示中文字符串。
【实现方法】以下分别介绍如何获取字符串的Unicode编码、UTF-8编码和GBK编码:1.获取Unicode编码:```javascriptfunction getUnicode编码(str) {const array = Array.from(str);return array.map(char => char.charCodeAt(0));}```2.获取UTF-8编码:```javascriptfunction getUTF8编码(str) {const array = Array.from(str);const utf8编码= [];array.forEach(char => {const code = char.charCodeAt(0);if (code <= 0x7F) {utf8编码.push(code);} else if (code <= 0x7FF) {utf8编码.push(code >> 6 | 0xC0);utf8编码.push(code & 0x3F);} else {utf8编码.push(code >> 12 | 0xE0);utf8编码.push((code >> 6) & 0x3F);utf8编码.push(code & 0x3F);}});return utf8编码;}```3.获取GBK编码:```javascriptfunction getGBK编码(str) {const array = Array.from(str);const gbk编码= [];array.forEach(char => {const code = char.charCodeAt(0);if (code >= 0x4E00 && code <= 0x9FFF) {gbk编码.push(code >> 3 | 0x81);gbk编码.push((code >> 6) | 0x34);gbk编码.push(code & 0x3F);} else {gbk编码.push(code);}});return gbk编码;}```【示例与应用】以下是一个简单的示例,展示了如何使用这些方法获取字符串的编码格式:```javascriptconst str = "你好,世界!";const unicode编码= getUnicode编码(str);console.log("Unicode编码:", unicode编码);const utf8编码= getUTF8编码(str);console.log("UTF-8编码:", utf8编码);const gbk编码= getGBK编码(str);console.log("GBK编码:", gbk编码);```【总结】本文介绍了如何在JavaScript中获取字符串的编码格式,包括Unicode 编码、UTF-8编码和GBK编码。
js转换编码格式的方法在JavaScript中,可以使用以下方法来转换编码格式:1. 使用`encodeURIComponent()`和`decodeURIComponent()`函数来转换URL编码:```javascriptvar encodedString = encodeURIComponent("编码内容");var decodedString = decodeURIComponent(encodedString);```2. 使用`btoa()`和`atob()`函数来转换Base64编码:```javascriptvar encodedString = btoa("编码内容");var decodedString = atob(encodedString);```3. 使用`TextEncoder`和`TextDecoder`对象来转换UTF-8编码:```javascriptvar textEncoder = new TextEncoder();var textDecoder = new TextDecoder();var encodedData = textEncoder.encode("编码内容");var decodedData = textDecoder.decode(encodedData);```4. 使用`String.fromCharCode()`和`charCodeAt()`函数来转换字符编码:```javascriptvar encodedString = "";for (var i = 0; i < "编码内容".length; i++) {encodedString += String.fromCharCode("编码内容".charCodeAt(i) + 1);}var decodedString = "";for (var i = 0; i < encodedString.length; i++) {decodedString +=String.fromCharCode(encodedString.charCodeAt(i) - 1); }```这些方法可以根据不同的编码格式进行转换操作。
JavaScript 编码规范一、命名规范1.允许名称中包含字母,数字,下划线'_'和‘$’,区分大小写2.变量(函数)的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解3.命名中若使用特殊约定或缩写,则要有注释说明4.除了在xpcom组件中,尽量不要使用“_”作为变量(函数)名的第一个字符。
它有时用来标识私有变量(函数),但实际上javascript并没有提供私有变量的功能。
如果私有变量很重要,可以使用私有成员的形式,应避免使用这种容易让人误解的命名习惯5.用正确的反义词组命名具有互斥意义的变量或相反动作的函数等注意:没有关系的变量不要使用***1,***2,***3,***4没有测试意义的变量(函数)不要用test开头二、声明1.变量声明1)所有变量必须在使用前定义,尽管javascrip并不强制要求这样做,但是这样做可以增加程序的可读性,且容易发现那些没有声明的变量(它们会被编译成全局变量)2)尽量减少全局变量的使用,不要让局部变量覆盖全局变量3)在函数的开始应先用 var 关键字声明函数中要使用的局部变量,每个变量单独占一行,注释变量的功能及代表的含义。
2.函数声明1)所有函数也必须在调用前进行声明2)内部函数应在 var 声明内部变量的语句之后声明,可以清晰地表明内部变量和内部函数的作用域。
三、语句1.一行最多有一个语句,语句后边要有“;”注:如果一个赋值语句是用函数和对象来赋值,可能需要跨多行,一定切记要在赋值语句末加上分号。
这是因为 JavaScript 中,所有表达式都可以当语句,遇换行符时会解析为表达式的结束,此时不规范的换行和分号的丢失,可能引入新的错误。
2.对于复合语句,if, for, while, do, switch, try … catch 等代码体,函数定义的函数体,对象的定义等都需要放在花括号'{}'里面。
JavaScript的命名规范JavaScript是一种用于在网页上添加交互功能的脚本语言。
良好的命名规范可以使代码更易读、易维护,并提高团队合作效率。
本文将介绍JavaScript中常用的命名规范。
一、变量和函数命名1. 使用有意义且描述准确的名称。
2. 变量名应该以小写字母开始,使用驼峰命名法来区分单词。
例如:firstName, lastName。
3. 函数名应该以动词开头,使用驼峰命名法。
例如:calculateTotal, getUserInfo。
4. 避免使用单个字符作为变量名,除非用于简单的计数器或迭代变量。
二、常量命名1. 使用全大写字母和下划线来命名常量。
例如:MAX_WIDTH, PI。
2. 将常量的命名与变量和函数的命名方式区分开,可以使用下划线分隔单词。
三、构造函数命名1. 构造函数名应使用大写字母开头,以便区分普通函数。
例如:Car, Employee。
2. 避免使用与内置对象重名的构造函数。
四、文件名命名1. 在文件名中使用有意义的名称来描述文件的内容。
2. 文件名应使用小写字母,多个单词之间使用连字符“-”分隔。
五、类命名1. 类名应该以大写字母开头。
2. 使用驼峰命名法来命名类。
例如:Person, ShoppingCart。
六、枚举命名1. 枚举命名应使用大写字母,多个单词之间使用下划线分隔。
七、模块命名1. 模块命名应该以小写字母开头,使用驼峰命名法。
2. 模块命名应该具有描述性,清晰明了。
八、注释规范1. 使用注释来解释代码的目的、功能和工作原理。
2. 注释应该简洁明了,避免冗余和无用的描述。
3. 在关键的函数和复杂的代码块上添加注释,以提高代码的可读性。
九、缩进和空格1. 使用合适的缩进来分层次显示代码块。
2. 使用空格来增加代码的可读性,并在运算符和逗号后面添加空格。
3. 避免在行尾使用空格,以免引起不必要的错误。
结论:良好的命名规范是编写易读、易维护代码的基础。
JavaScript中常用的编码格式主要包括以下几种:1. Unicode:Unicode是一种标准,用于表示所有语言的字符。
在JavaScript中,字符串默认使用Unicode编码。
2. UTF-8:UTF-8是Unicode的一种实现方式,它是变长字节编码,使用1到4个字节来表示一个字符。
对于英文字符,UTF-8编码与ASCII编码兼容。
3. ASCII:ASCII(American Standard Code for Information Interchange)是一种古老的字符编码,只包含128个字符,主要用于表示英文字符、数字和一些特殊符号。
4. JavaScript内置的编码函数:escape(): 这个方法采用ISO Latin字符集对指定的字符串进行编码。
所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化为%xx 格式的字符编码,其中xx 是该字符在字符集表里面编码的16进制数字。
encodeURI(): 这个方法对URI进行编码,它不会对属于URI的特殊字符进行编码,如冒号:、斜线/、问号?等。
encodeURIComponent(): 这个方法对URI组件进行编码,它会编码URI 中的特殊字符。
decodeURI(): 这些方法用于解码由encodeURI() 编码的URI。
decodeURIComponent(): 这些方法用于解码由encodeURIComponent() 编码的URI组件。
这些编码函数主要用于处理URLs和网络传输中的文本数据,以确保它们能够在不同的系统和环境中正确地传输和解析。
在实际应用中,UTF-8和Unicode 是最常用的编码格式,而escape()、encodeURI()和encodeURIComponent()等函数则常用于特定的字符串操作和数据传输场景。
Javascript编码规范 (1.0) o简介▪编撰▪要求o空格o对齐和缩进o换行o行长度▪字符串过长截断▪函数调用时参数过多▪三元运算符过长▪过长的逻辑条件组合▪过长的JSON和数组▪单行和跨行参数混用▪数组和对象初始化的混用o命名▪命名法说明▪变量名▪参数名▪函数名▪方法/属性▪私有(保护)成员▪常量名▪类名▪枚举名▪枚举的属性▪命名空间▪语义o语法▪变量声明▪字符串▪对象、数组和正则▪内置原型▪继承▪异常o注释▪类型定义▪文件注释▪命名空间注释▪类注释▪函数/方法注释▪事件注释▪全局变量注释▪常量注释▪细节注释o其它o参考简介本文档主要的设计目标是商业体系前端Javascript开发风格保持一致,使容易被理解和被维护。
编撰张立理、erik、顾轶灵、李玉北、王海洋、王杨、周莲洁。
本文档由商业运营体系前端技术组审校发布。
要求在本文档中,使用的关键字会以中文+括号包含的关键字英文表示:必须(MUST)。
关键字"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL"被定义在rfc2119中。
空格在特定的位置加上空格有助于代码的可读性,以下位置必须(MUST)加上空格:∙除括号外,所有运算符的前后,如∙用作代码块起始的左大括号{前,包括if、else、try、finally这些关键字之后,以及函数定义的参数列表之后∙以下关键字之后:for、switch、while∙对象初始化({ ... })的每个属性名的冒号:后∙所有逗号,后∙单行的对象初始化({ ... })左大括号{后和右大括号}前注意,在函数参数列表之前不得(MUST NOT)加上空格,以期和函数调用保持一致。
以下是一个函数的正确声明方式:function foo(x, y, z) {// FunctionBody}var foo = function(x, y, z) {// FunctionBody};对齐和缩进必须(MUST)采用4个空格为一次缩进,不得(MUST NOT)采用TAB作为缩进。
在以下情况下必须(MUST)缩进:∙一个代码块与其父代码块相比必须(MUST)多一次缩进∙未结束的语句在换行后必须(MUST)多一次缩进∙switch下的case和default必须(MUST)缩进换行在以下位置必须换行:∙每个独立语句结束后∙if、else、catch、finally、while等关键字前∙运算符处换行时,运算符必须(MUST)在新行的行首对于因为单行长度超过限制时产生的换行,参考行长度中的策略进行分隔。
行长度每一行代码严格以80字符为最大长度,即一行包括前后的空格,不得(MUST NOT)超过80个字符。
由于必定存在一些特殊的原因,导致一条语句的长度超过80,应当(SHOULD)按以下原则进行切分:字符串过长截断按一定长度截断字符串,并使用+运算符进行连接。
分隔字符串尽量按语义进行,如不要在一个完整的名词中间断开。
特别的,对于HTML片段的拼接,通过缩进,保持和HTML相同的结构:var html = '' // 此处用一个空字符串,以便整个HTML片段都在新行严格对齐 + '<article>'+ '<h1>Title here</h1>'+ '<p>This is a paragraph</p>'+ '<footer>Complete</footer>'+ '</article>';也可使用数组来进行拼接,相对+运算更容易调整缩进:var html = ['<article>','<h1>Title here</h1>','<p>This is a paragraph</p>','<footer>Complete</footer>','</article>';];html = html.join(''); // 注意需要join函数调用时参数过多当参数过多,在一行书写函数调用语句会超过80个字符的限制时,应当(SHOULD)将每个参数独立写在一行上,并将结束的右括号)独立一行,所有参数必须(MUST)增加一个缩进,以控制每行的长度,如:// 注意每一个参数的缩进foo(aVeryVeryLongArgument,anotherVeryLongArgument,callback);当参数较多,一行一个书写会导致过长时,应当(SHOULD)按逻辑对参数进行组合,最经典的是baidu.format函数,如:// 将参数分为“模板”和“数据”两块baidu.format(dateFormatTemplate,year, month, date, hour, minute, second);// 将参数分为“模板”、“日期”和“时间”baidu.format(dateFormatTemplate,year, month, date,hour, minute, second);三元运算符过长三元运算符由3部分组成,因此其换行应当(SHOULD)根据每个部分的长度不同,形成3种不同的情况:// 无需换行var result = condition ? resultA : resultB;// 条件超长的情况var result = thisIsAVeryVeryLongCondition? resultA : resultB;// 结果分支超长的情况var result = condition? thisIsAVeryVeryLongResult: resultB;var result = condition? resultA: thisIsAVeryVeryLongResult;不得(MUST NOT)出现以下情况:// 最后一个结果很长,但不建议合并条件和第一分支// 不要这么干var result = condition ? resultA: thisIsAVeryVeryLongResult;这种方法会导致语义上的分裂,即“条件和分支”在一行,“另一分支”在一行,没有按逻辑进行组织。
过长的逻辑条件组合当因为较复杂的逻辑条件组合导致80个字符无法满足需求时,应当(SHOULD)将每个条件独立一行,逻辑运算符放置在行首进行分隔,或将部分逻辑按逻辑组合进行分隔。
最终将右括号)与左大括号{放在独立一行,保证与if内语句块能容易视觉辨识。
如:// 注意逻辑运算符前的缩进if (user.isAuthenticated()&& user.isInRole('admin')&& user.hasAuthority('add-admin')|| user.hasAuthority('delete-admin')) {// Code}过长的JSON和数组如果对象属性较多导致每个属性一行占用空间过大,可以(SHOULD)按语义或逻辑进行分组的组织,如:// 英文-数字的映射var mapping = {one: 1, two: 2, three: 3, four: 4, five: 5,six: 6, seven: 7, eight: 8, nine: 9, ten: 10,eleven: 11, twelve: 12, thirteen: 13, fourteen: 14, fifteen: 15, sixteen: 16, seventeen: 17, eighteen: 18, nineteen: 19, twenty: 20 };通过5个一组的分组,将每一行控制在合理的范围内,并且按逻辑进行了切分。
对于项目较多的数组,也可以(SHOULD)采用相同的方法,如:// 数字-英文的映射var mapping = ['one', 'two', 'three', 'four', 'five','six', 'seven', 'eight', 'nine', 'ten','eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen','sixteen', 'seventeen', 'eighteen', 'nineteen', 'twenty'];单行和跨行参数混用当函数调用时,传递的参数大于或等于2个,且有一个或以上参数跨越多行时,应当(SHOULD)每一个参数独立一行,这通常出现在匿名函数或者对象初始化等作为参数时,如setTimeout函数等:setTimeout(function() {alert('hello');},200);order.data.read('id=' + me.model.id,function(data) {me.attchToModel(data.result);callback();},300);如果认为每个参数单独一行占用过多的空间,则应当(SHOULD)将跨域多行的参数独立出来为一个变量:function attachDataToModel() {me.attchToModel(data.result);callback();}order.data.read('id=' + me.model.id, attachDataToModel, 300);数组和对象初始化的混用必须(MUST)严格按照每个对象的起始{和结束}在独立一行的风格书写,如:var array = [{// ...},{// ...}];命名命名的方法通常有以下几类:命名法说明∙camel命名法,形如thisIsAnApple∙pascal命名法,形如ThisIsAnApple∙下划线命名法,形如this_is_an_apple∙中划线命名法,形如this-is-an-apple根据不同类型的内容,必须(MUST)严格采用如下的命名法:变量名必须(MUST)使用camel命名法参数名必须(MUST)使用camel命名法函数名必须(MUST)使用camel命名法方法/属性必须(MUST)使用camel命名法私有(保护)成员必须(MUST)以下划线_开头常量名必须(MUST)使用全部大写的下划线命名法,如IS_DEBUG_ENABLED类名必须(MUST)使用pascal命名法枚举名必须(MUST)使用pascal命名法枚举的属性必须(MUST)使用全部大写的下划线命名法命名空间必须(MUST)使用camel命名法语义命名同时还需要关注语义,如:∙变量名应当(SHOULD)使用名词∙boolean类型的应当(SHOULD)使用is、has等起头,表示其类型∙函数名应当(SHOULD)用动宾短语∙类名应当(SHOULD)用名词语法变量声明一个var关键字必须(MUST)只声明一个变量。