Airbnb Javascript 代码规范重要点总结es6
中文原地址
1.对所有的引用使用 const 而非 var。这能确保你无法对引用重复赋值。
当需要变动引用时,使用let。
const和let都是块级作用域。
2.创建对象的方式:
const item = {};
使用对象属性的简写,且为简写的属性分组。
3.创建数组的方式:
const arr = [ ];
使用arr.push()去替代直接赋值。
使用拓展运算符去赋值数组: arrCopy = [...arr];
使用Array.from()把一个类数组对象转换成数组:
const foo = document.querySelectorAll('.foo');
const nodes = Aarry.from(foo);
4.解构:
使用解构存取和使用多属性对象:
function getFullName({ firstName, lastName }) {
return `${firstName} ${lastName}`;
}
对数组也使用解构赋值:
const arr = [1, 2, 3, 4];
const [first, second] = arr; // 等同于first = arr[0],second = arr[1]
返回多个值时使用对象解构:这样不用在意属性的顺序
function returnInput (input) {
...
return { left, right, top, bottom };
}
const { left, right } = processInput(input);
5.Strings
程序化生成字符串时,使用模板字符串代替字符串链接
function sayHi(name) {
return `How are you, ${name}?`;
}
6.函数
使用函数声明代替函数表达式
function foo() {
}
立即调用的函数表达式:
(()=> {
console.log('Welcome to the Internet. Please follow me.');
})();
永远不要在非函数代码块(if,while)中声明一个函数,把那个函数赋给一个变量。
let test;
if (current) {
test = () => {
...
};
}
不要使用arguments,可以选择rest语法...替代。rest是一个真正的数组,且能明确你要传入的参数
function cont(...args) {
return args.join('');
}
直接给函数的参数指定默认值,不要使用一个变化的函数参数
function fn(opts = {}) {...}
7.构造器
总是使用class,避免直接操作prototype。
使用extends继承。
方法可以返回this来帮助链式调用。
8.模块
总是使用模组(import/export)而非其他非标模块系统。
import { es6 } from './AirbnbStyleGuide';
export default es6;
不要使用通配符import以确保只有一个默认export
不要从import中直接export
9.迭代器
使用高阶函数如map()/reduce()去替代for-of
const number = [1, 2, 3, 4, 5];
const sum = numbers.reduce((total, num) => total + num, 0);
sum === 15;
...
10.属性
使用 . 访问对象的属性。
当通过变量访问属性时使用中括号[]
11.变量
一直使用const来声明变量以防止全局污染,且用const为每一个变量声明。
将所有的const和let分组。
12.提升
使用let和const不会被提升,所以必须声明在前面。
匿名函数的表达式的变量名会被提升但是函数内容不会
命名的函数表达式的变量名会被提升,但是函数名和函数内容不会
函数声明的名称和哈你数体都会被提升。
以上和js的解析机制有关。
13.
优先使用 === 和 !== 而非 == / !=
条件表达式中:
对象被计算为true
undefined / null 都为false
数字除 +0 / -0 / NaN 外 都为true
字符串除‘ ’外都为true
14.代码块
使用大括号包裹所有的多行代码块,单行不必。
15.注释
使用/**...*/作为多行注释
使用//作为单行注释,在评论对象上另起一行,且在注释前插入空行
使用 // FIXME 标注问题
使用 // TODO 标注问题的解决方式
16.空格
在块末和新语句前插入空行
17.类型转换
字符串:不要使用 + ‘ ’
// => this.reviewScore = 9;
const totalScore = String(this.reviewScore);
数字:使用parseInt,并带上转换类型的基数
const inputValue = '4';
const val = Number(inputValue); // 或者
const val = parseInt(inputValue, 10);
布尔:
const age = 0;
const hasAge = Boolean(age); // 或者
const hasAge = !!age;
18.命名规则
使用帕斯卡式命名构造函数或类
不要使用下划线结尾或开头来命名属性和方法
不要保存this的引用。使用箭头函数或Function#bind
如果文件只输出一个类,那你的文件名必须和类名完全保持一致(帕斯卡式)
如果文件导出默认的函数,文件名与该函数名一致。(驼峰式)
19.存取器
属性的存取函数不是必须的
使用getValue()和setValue('...')
如果属性是布尔值,使用isVal() 或 hasVal()
Airbnb Javascript 代码规范重要点总结es6的更多相关文章
- Airbnb JavaScript代码规范(完整)
类型Types 基本数据类型 string number boolean null undefined symbol const foo = 1; let bar = foo; bar = 9; co ...
- 深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点
深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 2011-12-28 23:00 by 汤姆大叔, 139489 阅读, 119 评论, 收藏, 编辑 才华横溢的 ...
- 高质量JavaScript代码书写基本要点
翻译-高质量JavaScript代码书写基本要点 by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/ ...
- 高质量JavaScript代码书写基本要点学习
高质量JavaScript代码书写基本要点学习 可维护的代码意味着: •可读的 •一致的 •可预测的 •看上去就像是同一个人写的 •已记录 最小全局变量(Minimizing Globals) ...
- 编写高质量JavaScript代码的基本要点记录
原文:深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 1.最小全局变量(Minimizing Globals)的重要性 JavaScript通过函数管理作用域.在 ...
- 5 JSON&与JavaScript转换&JavaScript:void(0)&JavaScript代码规范
JSON:JavaScript Object Notation JS对象简谱 一种轻量级的数据交换格式,用于存储和传输数据的格式,通常用于服务端向网页传递数据 是独立的语言,易于理解 JSON语法 ...
- JavaScript 代码规范
所有的 JavaScript 项目适用同一种规范. JavaScript 代码规范 代码规范通常包括以下几个方面: 变量和函数的命名规则 空格,缩进,注释的使用规则. 其他常用规范-- 规范的代码可以 ...
- js基石之---易读、易复用、易重构的 JavaScript 代码规范
易读.易复用.易重构的 JavaScript 代码规范 1.变量命名规范有意义 Bad: const yyyymmdstr = moment().format("YYYY/MM/DD&quo ...
- javascript代码规范 [转]
原文:http://www.css88.com/archives/5366 全局命名空间污染与 IIFE 总是将代码包裹成一个 IIFE(Immediately-Invoked Function Ex ...
随机推荐
- vitual dom实现(转)
1. 通过JavaScript来构建虚拟的DOM树结构,并将其呈现到页面中: 2. 当数据改变,引起DOM树结构发生改变,从而生成一颗新的虚拟DOM树,将其与之前的DOM对比,将变化部分应用到真实的D ...
- JS-getHours()方法
var time=new Date().getHours(); 获取当前系统时间的小时值,eg:若当前系统时间为2019.4.25 10:52 则返回10
- ieda 快捷键修改方法
框中意思为: 1.增加快捷键 2.增加缩写
- [ Servlet / JSP ] J2EE Web Application 中的 JSESSIONID 是什么?
JSESSIONID is a cookie in J2EE web application which is used in session tracking. Since HTTP is a st ...
- IDEA永久激活方法
Idea版本:2018.1.5 准备工作: 1.安装,从官网下载安装,点击进去之后,进行选择需要的版本 2.下载破解包: 链接:https://pan.baidu.com/s/1lCb0MGetP1_ ...
- android -------- RecyclerView的可(多个Item水平,垂直)滚动列表的实现
RecyclerView的可滚动的列表实现,视图相邻的视图在屏幕上部分或完全可见(水平3个item,第一个和第三个显示一部分,第二个完全显示) 效果如图: 基于RecyclerView完成的(自定义控 ...
- HeadFirstPython学习笔记——OSError: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。
1.文件构成如下 2.运行服务器时报错 OSError: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试. 解决方法:更换端口 3.Python的CGI跟踪术 在 ...
- XCube和X组件的入门级使用教程
我也是一个入门级的初学者,在学习魔方的时候,很多不是很懂的地方,而网上的资料又比较少.尤其是Newlife的论坛打不开的情况下 所以就想着把这个初级项目做完后,做一个入门级教程.保证人人都看得懂(.^ ...
- Angular7.1.4+Typescript3.1框架学习(三)
接着第二部分,这部分介绍常见angular指令使用 1. 在父页面文件中添加组件(通过ng命令生成的component) <app-messages></app-messages&g ...
- round函数解决oracle报错"OCI-22053: 溢出错误"的问题
继上次公司网站报错除数为0的问题,这次又来报错溢出错误,还是同一条语句!搜索网上的解决方法,发现问题描述和解决方法如下: Oracle 数值数据类型最多可存储 38 个字节的精度.当将 Oracle ...