在babel中使用ES6时,在行尾使用分号是一个很好的约定

Rad*_*dex 5 javascript ecmascript-6 reactjs redux

我在使用redux的教程网上看到了几个例子,并在使用带有babel的es6时省略了分号的代码.

导入,导出结束时的分号示例.

  • 是什么原因?
  • 什么是好习惯?

缺少分号


import React, { PropTypes } from 'react'

const Location = ({ onClick, name, country}) => (
    <li
        onClick={onClick}
    >
        {name} {country}
    </li>
)

export default Location
Run Code Online (Sandbox Code Playgroud)

与分号


import React, { PropTypes } from 'react';

const Location = ({ onClick, name, country}) => (
    <li
        onClick={onClick}
    >
        {name} {country}
    </li>
);

export default Location;
Run Code Online (Sandbox Code Playgroud)

Ful*_*oon 6

参照ASI部ES文档确认以下内容.

大多数ECMAScript语句和声明必须以分号结束.此类分号可能始终显式出现在源文本中.然而,为方便起见,在某些情况下可以从源文本中省略这样的分号.这些情况通过说在这些情况下分号自动插入源代码令牌流来描述.

在你的情况下,ES6正在通过babel使用.这是一个转换器,它可能会在将源文本转换为本机JS的过程中添加遗漏的分号.

IMO,良好的做法是启用ES linter,它可以帮助避免大多数愚蠢的错误,这些错误可能会导致应用程序在时间线的后期点处于未定义状态.

链接可以为您提供更多信息.


小智 3

这取决于您的编码风格和 linting 工具。例如,如果您使用standard,则明确必须省略分号。标准是一组不可配置的 eslint 规则。在 JS 中不使用分号是可以的。它\xe2\x80\x99s 并不慢或引入错误,也可以使用它们。没关系。

\n

  • 实际上,它**确实**引入了错误。 (3认同)