美文网首页
温故知新之ES6(七)

温故知新之ES6(七)

作者: simuty | 来源:发表于2018-09-12 16:40 被阅读30次

Airbnb

1. 块级作用域

  1. let 取代 var.
  2. 全局常量和线程安全
1. const 可以提醒阅读程序的人,这个变量不应该改变;
2. const 比较符合函数式编程思想,运算不改变值,只是新建值,而且这样也有利于将来的分布式运算;
3.  JavaScript 编译器会对 const 进行优化,所以多使用 const ,有利于提供程序的运行效率,也就是说 let 和 const 的本质区别,其实是编译器内部的处理不同。

2. 字符串

静态字符串一律使用单引号或反引号,不使用双引号。动态字符串使用反引号。

// bad
const a = "foobar";
const b = 'foo' + a + 'bar';

// acceptable
const c = `foobar`;

// good
const a = 'foobar';
const b = `foo${a}bar`;
const c = 'foobar';

3. 解构赋值

使用数组成员对变量赋值时,优先使用解构赋值。

const arr = [1, 2, 3, 4];

// bad
const first = arr[0];
const second = arr[1];

// good
const [first, second] = arr;

4. 对象

单行定义的对象,最后一个成员不以逗号结尾。多行定义的对象,最后一个成员以逗号结尾。

// bad

const a = { k1: v1, k2: v2, };

const b = {

  k1: v1,

  k2: v2

};


// good
const a = { k1: v1, k2: v2 };
const b = {
  k1: v1,
  k2: v2,
};

对象尽量静态化,一旦定义,就不得随意添加新的属性。如果添加属性不可避免,要使用 Object.assign 方法。

// bad
const a = {};
a.x = 3;

// if reshape unavoidable
const a = {};
Object.assign(a, { x: 3 });

// good
const a = { x: null };
a.x = 3;

// bad

const obj = {

  id: 5,

  name: 'San Francisco',

};

obj[getKey('enabled')] = true;



// good

const obj = {

  id: 5,

  name: 'San Francisco',
  // 即便是函数调用,也在一起
  [getKey('enabled')]: true,

};

5. 数组

使用扩展运算符(...)拷贝数组。

// bad

const len = items.length;

const itemsCopy = [];

let i;



for (i = 0; i < len; i++) {

  itemsCopy[i] = items[i];

}

// good
const itemsCopy = [...items];

6. 函数

立即执行函数可以写成箭头函数的形式。

(() => {
  console.log('Welcome to the Internet.');
})();

那些需要使用函数表达式的场合,尽量用箭头函数代替。因为这样更简洁,而且绑定了this。

// bad

[1, 2, 3].map(function (x) {

  return x * x;

});



// good

[1, 2, 3].map((x) => {

  return x * x;

});

// best
[1, 2, 3].map(x => x * x);

7. 模块

首先,Module语法是JavaScript模块的标准写法,坚持使用这种写法。使用 import 取代 require 。

// bad

const moduleA = require('moduleA');

const func1 = moduleA.func1;

const func2 = moduleA.func2;



// good

import { func1, func2 } from 'moduleA';

// commonJS的写法

var React = require('react');



var Breadcrumbs = React.createClass({

  render() {

    return <nav />;

  }

});



module.exports = Breadcrumbs;



// ES6的写法
import React from 'react';


class Breadcrumbs extends React.Component {

  render() {

    return <nav />;

  }

};

export default Breadcrumbs;

不要在模块输入中使用通配符。因为这样可以确保你的模块之中,有一个默认输出(export default)。

// bad

import * as myObject from './importModule';

// good
import myObject from './importModule';

如果模块默认输出一个函数,函数名的首字母应该小写。

function makeStyleGuide() {

}
export default makeStyleGuide;

如果模块默认输出一个对象,对象名的首字母应该大写。

const StyleGuide = {
  es6: {
  }
};

export default StyleGuide;

相关文章

  • 温故知新之ES6(七)

    Airbnb 1. 块级作用域 let 取代 var. 全局常量和线程安全 2. 字符串 静态字符串一律使用单引号...

  • 温故知新之ES6(四)

    希望大家看到这个字数,不要被吓到,Proxy / Reflect 真的很值得学习的 1.Proxy概述 Proxy...

  • 温故知新之ES6(三)

    1. SET ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。Set 本身...

  • 温故知新之ES6(一)

    温故而知新 最近打算看一些 ES TS 计算机 相关的书籍、翻译一些日常搜集的优秀文章、分享一些工作心得,做一些笔...

  • 温故知新之ES6(二)

    目录 1. 数组的扩展 1 扩展运算符 扩展运算符(spread)是三个点( ... )。它好比 rest 参数的...

  • 温故知新之ES6(五)

    1. Iterator 和 for...of 循环 ES6 中有四种数据集合:数组( Array )、对象( Ob...

  • 温故知新之ES6(六)

    1. Class 的基本语法 JavaScript 语言中,生成实例对象的传统方法是通过构造函数。下面是一个例子。...

  • 日本企业如何实践“温故知新”?

    日本企业如何实践“温故知新”? 原创:曲军 结合《论语》了解日本企业文化 第七讲 温故知新 1,《论语》原文: 子...

  • ES6 温故知新

    let / const ES6 种用来定义变量和常量的 机遇 CONST 创建的变量,变量存储的值不能被修改(常量...

  • 温故知新(七)

    一,异化 2015年,浙江丽水,一个写生活动,有十几号人,秦秀杰老师也在,几乎没听见他说过话,见面,微微一笑...

网友评论

      本文标题:温故知新之ES6(七)

      本文链接:https://www.haomeiwen.com/subject/dpfbgftx.html