14es6代码规范.doc
《14es6代码规范.doc》由会员分享,可在线阅读,更多相关《14es6代码规范.doc(9页珍藏版)》请在文库网上搜索。
1、块级作用域(1)let取代varES6提出了两个新的声明变量的命令:let和const。其中,let完全可以取代var,因为两者语义相同,而且let没有副作用。use strict;if (true) let x = hello;for (let i = 0; i 10; i+) console.log(i);上面代码如果用var替代let,实际上就声明了两个全局变量,这显然不是本意。变量应该只在其声明的代码块内有效,var命令做不到这一点。var命令存在变量提升效用,let命令没有这个问题。use strict;if(true) console.log(x); / ReferenceErro
2、r let x = hello;上面代码如果使用var替代let,console.log那一行就不会报错,而是会输出undefined,因为变量声明提升到代码块的头部。这违反了变量先声明后使用的原则。所以,建议不再使用var命令,而是使用let命令取代。(2)全局常量和线程安全在let和const之间,建议优先使用const,尤其是在全局环境,不应该设置变量,只应设置常量。这符合函数式编程思想,有利于将来的分布式运算。/ badvar a = 1, b = 2, c = 3;/ goodconst a = 1;const b = 2;const c = 3;/ bestconst a, b,
3、c = 1, 2, 3;const声明常量还有两个好处,一是阅读代码的人立刻会意识到不应该修改这个值,二是防止了无意间修改变量值所导致的错误。所有的函数都应该设置为常量。长远来看,JavaScript可能会有多线程的实现(比如Intel的River Trail那一类的项目),这时let表示的变量,只应出现在单线程运行的代码中,不能是多线程共享的,这样有利于保证线程安全。字符串静态字符串一律使用单引号或反引号,不使用双引号。动态字符串使用反引号。/ badconst a = foobar;const b = foo + a + bar;/ acceptableconst c = foobar;/
4、 goodconst a = foobar;const b = foo$abar;const c = foobar;解构赋值使用数组成员对变量赋值时,优先使用解构赋值。const arr = 1, 2, 3, 4;/ badconst first = arr0;const second = arr1;/ goodconst first, second = arr;函数的参数如果是对象的成员,优先使用解构赋值。/ badfunction getFullName(user) const firstName = user.firstName; const lastName = user.lastNa
5、me;/ goodfunction getFullName(obj) const firstName, lastName = obj;/ bestfunction getFullName( firstName, lastName ) 如果函数返回多个值,优先使用对象的解构赋值,而不是数组的解构赋值。这样便于以后添加返回值,以及更改返回值的顺序。/ badfunction processInput(input) return left, right, top, bottom;/ goodfunction processInput(input) return left, right, top, b
6、ottom ;const left, right = processInput(input);对象单行定义的对象,最后一个成员不以逗号结尾。多行定义的对象,最后一个成员以逗号结尾。/ badconst a = k1: v1, k2: v2, ;const b = k1: v1, k2: v2;/ goodconst a = k1: v1, k2: v2 ;const b = k1: v1, k2: v2,;对象尽量静态化,一旦定义,就不得随意添加新的属性。如果添加属性不可避免,要使用Object.assign方法。/ badconst a = ;a.x = 3;/ if reshape una
7、voidableconst a = ;Object.assign(a, x: 3 );/ goodconst a = x: null ;a.x = 3;如果对象的属性名是动态的,可以在创造对象的时候,使用属性表达式定义。/ badconst obj = id: 5, name: San Francisco,;objgetKey(enabled) = true;/ goodconst obj = id: 5, name: San Francisco, getKey(enabled): true,;上面代码中,对象obj的最后一个属性名,需要计算得到。这时最好采用属性表达式,在新建obj的时候,将
8、该属性与其他属性定义在一起。这样一来,所有属性就在一个地方定义了。另外,对象的属性和方法,尽量采用简洁表达法,这样易于描述和书写。var ref = some value;/ badconst atom = ref: ref, value: 1, addValue: function (value) return atom.value + value; ,;/ goodconst atom = ref, value: 1, addValue(value) return atom.value + value; ,;数组使用扩展运算符(.)拷贝数组。/ badconst len = items.l
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 文币 0人已下载
下载 | 加入VIP,免费下载 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 14 es6 代码 规范