【问题标题】:Is a good convention using semicolon at the end of the line when using ES6 in babel [duplicate]在 babel 中使用 ES6 时,在行尾使用分号是一个很好的约定 [重复]
【发布时间】:2017-08-27 06:04:14
【问题描述】:

我在网上看到了几个使用 redux 的教程示例,并在使用 es6 和 babel 时省略分号的代码做出反应。

导入、导出末尾的分号示例。

  • 是什么原因?
  • 什么是好的做法?

缺少分号


import React, { PropTypes } from 'react'

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

export default Location

vs 分号


import React, { PropTypes } from 'react';

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

export default Location;

【问题讨论】:

  • 原因是:你可以避免它。好的做法:你应该放置它
  • 我认为放置它是一个好习惯。由于您使用的是 es6,因此您最喜欢编译代码,并且编译器(至少 babel)默认添加 ;s。在您阅读的代码中不添加分号的好处是您摆脱了许多无用的噪音,并防止自己在同一行中编写 2 条语句。
  • @BalázsÉdes 说分号是“无用的噪音”有点牵强。
  • @Radex 这与 Babel 几乎没有关系。
  • @torazaburo 除了使传统的 for 循环不会导致语法错误之外,您还发现了分号的哪些特殊用途?之所以提到 babel,是因为它是使 es6+ 代码统一使用的最常用工具。不过,这是一个选择问题,如果你喜欢分号,那就去吧。

标签: javascript reactjs ecmascript-6 redux


【解决方案1】:

参考 ES 文档ASI section 确认以下内容。

大多数 ECMAScript 语句和声明必须以分号结尾。这样的分号可能总是显式地出现在源文本中。然而,为方便起见,在某些情况下,可以从源文本中省略此类分号。描述这些情况时,分号会自动插入到源代码令牌流中。

在您的情况下,ES6 正在通过 babel 使用。它是一个转译器,它可能会在将源文本转译为原生 JS 的过程中添加遗漏的分号。

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

link 可以为您提供更多信息。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 实际上,它确实引入了错误。
    • 永远不要以 (、[ 或 `
    • 正如我所说,这是一个选择问题,所以我不会就这个有争议的话题展开辩论。我从未使用过分号,我的代码运行良好。
    • 省略分号本身不会引入错误。
    猜你喜欢
    • 2016-04-29
    • 2023-03-12
    • 2010-12-15
    • 2016-03-07
    • 1970-01-01
    • 2019-01-20
    • 2016-04-11
    • 1970-01-01
    • 2016-06-05
    相关资源
    最近更新 更多