js编码规范答案?
1.嵌入规则
Javascript程序应该放在。js文件,并在需要时以ltscriptsrc#34filename.js#34gt的形式包含在页面中。如果Javascript代码不是特定于页面的,您应该尽量避免直接在页面中编写Javascript代码。
2.对齐缩进和换行
a)缩进
同一系统应采用相同的压痕标准。本文主张缩进大小应为4个空格。编译器对Tab键替换的空间大小有不同的定义。建议在设置开发环境时,将编辑器中的Tab快捷键重置为4个空格。大多数编译器都提供这个特性。否则建议缩进4个空格。
b)换行
必须在以下位置换行:
在每个独立语句的末尾;
If,else,catch,finally,while等关键词;
当一行在运算符处中断时,该运算符必须位于新行的开头。
对于单行长度超出限制时出现的换行,请参考行长度中的分隔策略。
1).字符串太长,被截断。
每行代码应少于80个字符。如果代码比较长,要尽量断行,断行要选在运算符和标点符号之后,最好选在分号或逗号之后。下一行代码相对于前一行缩进4个空格。这样可以有效防止复制粘贴造成的代码丢失等错误,增强可读性。
将字符串截断一定长度,并用运算符连接。尽可能在语义上分隔字符串,比如不要在一个完整的名词中间断开。特别地,对于HTML片段的拼接,通过缩进来维持与HTML相同的结构:
您还可以使用数组进行缝合,这使得相对于操作调整缩进变得更加容易:
2).三元运算符太长。
三元运算符由三部分组成,因此其换行符应根据各部分的长度而不同,形成三种不同的情况:
不得出现以下情况:
3).逻辑条件组合过长
当80个字符可以由于复杂的逻辑条件组合而不能满足需求,每个条件都要用单独的一行来分隔,并且要把逻辑运算符放在行首来分隔,或者用逻辑组合来分隔某些逻辑。最后把右括号)和左大括号{放在一个独立的行上,保证if中的句块在视觉上容易识别。比如:
4).长JSON和数组。
如果一个对象的属性很多,导致每个属性一行占用的空间太大,可以按照语义或者逻辑组织成组,比如:
通过五组的分组,将每条线控制在合理的范围内,进行逻辑划分。对于有很多项的数组,也可以采用同样的方法,比如:
5).返回语句
Return如果将表达式的执行作为返回值,请将表达式和return放在同一行,以免换行符被误解为语句结束而导致返回。回错误。return关键字后若没有返回表达式,则返回undefined。构造器的默认返回值为this。
示例:
3.命名
命名的方法通常有以下几类:
a).命名法说明
1).camel命名法,形如thisIsAnApple
2).pascal命名法,形如ThisIsAnApple
3).下划线命名法,形如this_is_an_apple·
4).中划线命名法,形如this-is-an-apple
根据不同类型的内容,必须严格采用如下的命名法:
b).变量名:必须使用camel命名法
c).参数名:必须使用camel命名法
d).函数名:必须使用camel命名法
e).方法/属性:必须使用camel命名法
f).私有(保护)成员:必须以下划线_开头
g).常量名:必须使用全部大写的下划线命名法,如IS_DEBUG_ENABLED
h).类名:必须使用pascal命名法
i).枚举名:必须使用pascal命名法
j).枚举的属性:必须使用全部大写的下划线命名法
k).命名空间:必须使用camel命名法
l).语义:命名同时还需要关注语义,如:
变量名应当使用名词;
boolean类型的应当使用is、has等起头,表示其类型;·
函数名应当用动宾短语;
类名应当用名词。
4.注释
注释要尽量简单,清晰明了。着重注释的意思,对不太直观的部分进行注解:
(当然这种直接定义一堆全局变量的做法不推荐)
此外,Javascript的注释有两种#34//#34和#34#34,建议#34//#34用作代码行注释,#34#34形式用作对整个代码段的注销,或较正式的声明中,如函数参数、功能、文件功能等的描述中:
另:复制粘贴应注意注释是否与代码对应。
5.声明
1).变量的声明
尽管Javascript语言并不要求在变量使用前先对变量进行声明。但我们还是应该养成这个好习惯。这样可以比较容易的检测出那些未经声明的变量,避免其变为隐藏的全局变量,造成隐患。
在函数的开始应先用var关键字声明函数中要使用的局部变量,注释变量的功能及代表的含义,且应以字母顺序排序。每个变量单独占一行,以便添加注释。这是因为Javascript中只有函数的{}表明作用域,用var关键字声明的局部变量只在函数内有效,而未经var声明的变量则被作为一个全局变量。示例:
用var声明的变量valu
为什么undefined,NaN和Infinity可以被赋值,而null不可以?
在javascript中。
Undefined、NaN和Infinity是全局对象窗口的属性。所以它们可以被赋值,但是因为它们的内部属性[[writable]]为false,所以赋值实际上是无效的。证明:
(窗口,未定义);//结果://Object{valu:未定义,writabl:假,:假,configurabl:假}
可见undefined确实是window的属性,不能写。
Null类似于true和false,是一个文字量,属于Javascript的保留字。换句话说就是和123,foobar一样,当然不能赋值。