【问题标题】:React Native - What's the point of leaving trailing comma everywhere?React Native - 到处留下逗号有什么意义?
【发布时间】:2015-04-05 11:59:03
【问题描述】:

在使用 React Native 时,我注意到它的贡献者和示例中有一些奇怪的约定 - 在任何地方留下逗号,例如:

有什么意义?

【问题讨论】:

    标签: javascript conventions jshint react-native


    【解决方案1】:

    那么当你执行diff 时,只改变了一行。

    如果您不这样做 - 2 行将被标记为已更改。

    从技术上讲,你可以将逗号放在行首并改变你的风格,但它(警告:几乎没有自以为是)丑陋。

    如果我没记错的话,在你解构 JS 对象时指定它是有效的,但是当你将它用作 JS 对象字面量时这样做是无效的(如果我错了请纠正我)。

    所以这个:

    var { foo, } = obj;
    

    是一个有效的 ES6 代码。

    还有这个:

    var o = { foo: 42, };
    

    不是有效的 JS 代码。

    【讨论】:

    • 不确定 ES6 规范,但尾随逗号会导致 IE 崩溃,但在其他任何地方都可以使用(不确定到哪个版本的 IE,因为我不使用 IE)。因此,传统的建议是始终避免在 js 中使用尾随逗号 - 以免在用户使用您不使用的浏览器 (IE) 时被烧毁
    【解决方案2】:

    首先,如果你有这样的 sn-p:

    {
        a: 'a',
        b: 'b'
    }
    

    并在其中添加一行,您必须记住在'b'之后添加一个逗号,否则您会收到语法错误:

    {
        a: 'a',
        b: 'b'
        c: 'c'
    }
    

    如果你把逗号放在任何地方,你甚至不必考虑这一点。
    换行和删除行也是如此。

    其次,如果您使用的是 git 或 svn 等版本管理系统并添加一行,则必须在上一行附加一个逗号,因此两行已更改而不是一行。

    第三,它看起来更加一致,尤其是当所有键和值都具有相同的长度时:

    {
        a: 'a',
        b: 'b',
        c: 'c',
        d: 'd',
        e: 'e',
        f: 'f'  // <-- Aren't you bothered by this?
    }
    

    【讨论】:

    • “你必须记住在'b'之后添加一个逗号,否则你会得到一个语法错误”---对不起,但这是一个愚蠢的理由。跨度>
    • 您可以对编程中的内存安全说同样的话,但各种应用程序中的大量内存泄漏表明人们实际上倾向于忘记事情。
    • 我这么说是因为 - 语法不正确的代码将无法运行。虽然有内存泄漏的代码可以正常运行。所以不确定你的比喻是关于什么的。因此,从技术上讲,您不能忘记在此处添加逗号。
    • 你是对的,忘记我的类比,你只是不太可能遇到错误。
    • 这很愚蠢,因为您将无法运行代码。所以这是你不能跳过的错误。
    【解决方案3】:

    您最终可能会遇到这种情况,简单但很难调试和查找:

    [
        -7,
        -2,
        -1,
        -3   // <-- this simple skip would cause a -7 here (-3 - 4) with no errors
        -4,
        -2,
        -9
    ];
    

    所以是的,我宁愿在每一行都采用尾随逗号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      • 2014-07-21
      • 2014-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多