V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
iblessyou
V2EX  ›  问与答

大家的 js 代码逗号怎么玩的

  •  
  •   iblessyou · 2018-02-12 10:32:05 +08:00 · 3478 次点击
    这是一个创建于 2511 天前的主题,其中的信息可能已经有所发展或是发生改变。

    偶然看到有前置逗号的代码后,第一反应是这人是个 2 货吧 但仔细一琢磨,发现这么搞好处好像还不少的。 删除时只删一行 比如末行不会忘记多个逗号,也不容易漏逗号 能当个行标记,找东西也好找

    统计下大家这样写的多不多

    21 条回复    2018-08-09 11:32:02 +08:00
    whypool
        1
    whypool  
       2018-02-12 10:36:47 +08:00
    啥意思?
    wu67
        2
    wu67  
       2018-02-12 10:46:50 +08:00
    什么玩意?你是说尾逗号 trailing comma ?
    ZxBing0066
        3
    ZxBing0066  
       2018-02-12 10:58:14 +08:00
    楼主 eslint prettier 了解一下

    跟填不填分号一样,前置还是后置一样。。没啥可说的
    A3m0n
        4
    A3m0n  
       2018-02-12 10:59:44 +08:00
    不懂
    A3m0n
        5
    A3m0n  
       2018-02-12 11:01:11 +08:00
    @A3m0n 借楼问个问题,之前有看到这种写法的:
    var a =a || 12;
    想知道是为什么。
    lzvezr
        6
    lzvezr  
       2018-02-12 11:05:56 +08:00
    @A3m0n 一般用于初始化,如果其他地方 a 已经赋值了,就不再赋值
    maichael
        7
    maichael  
       2018-02-12 11:07:14 +08:00
    @A3m0n

    默认值,如果 a 是 undefined 之类就赋值 12
    gbin
        8
    gbin  
       2018-02-12 11:09:48 +08:00 via Android
    没有代码,怎么评?
    stzz
        9
    stzz  
       2018-02-12 11:13:17 +08:00 via Android
    @A3m0n 还有这写法不对,这样写 a 必然是 12
    LancerComet
        10
    LancerComet  
       2018-02-12 11:19:32 +08:00
    没看明白,是在说逗号表达式?俩字别用
    ![comma-expression.jpg]( https://i.loli.net/2018/02/12/5a810794297a0.jpg)

    另外项目里没有 Lint 帮助做风格控制么?
    newtype0092
        11
    newtype0092  
       2018-02-12 11:39:20 +08:00
    @stzz a 有值的时候还是等于原来的值啊
    ETO
        12
    ETO  
       2018-02-12 12:04:54 +08:00
    @stzz 这有什么不对的?
    huiyifyj
        13
    huiyifyj  
       2018-02-12 12:07:35 +08:00 via Android
    规范不同啦。
    但最后压缩后都一样🙄。
    mcfog
        14
    mcfog  
       2018-02-12 12:27:03 +08:00   ❤️ 1
    @ETO
    @newtype0092

    1. 如果 a 是在本 scope 中,这个写法的问题在于一般来说 var 声明前置是最佳实践,这样写要么说明重复 var 声明了,要么和直接写 var a=12 没有区别

    2. 如果外层 scope 有 a,那么 var 在本层声明了一个 a 覆盖了外层的 a,写 a || 12 还是没有意义
    https://pastebin.com/PnUZJ4aD


    换句话说,这样写唯一能使||有意义的场景是个非常糟糕的场景(重复 var 声明)
    newtype0092
        15
    newtype0092  
       2018-02-12 13:29:45 +08:00
    @mcfog 那一般验证参数是否定义并给默认值的情况怎么写更好?
    guog
        16
    guog  
       2018-02-12 14:07:04 +08:00 via Android   ❤️ 2
    楼已经被带歪了。我说下楼主的示例:
    比如这种
    {
    "key1": "value1"
    ,"key2": "value2"
    ,"key3": "value3"
    }
    在新增加一行或者删除非第一行时不用再担心末尾的逗号,而另一种常见的方式:
    {
    "key1": "value1",
    "key2": "value2",
    "key3": "value3"
    }
    在新增时总要留意逗号,否则会报错。
    kohos
        17
    kohos  
       2018-02-12 15:18:36 +08:00
    强迫症表示还是喜欢把逗号放后面,不对齐看不爽
    lieqishi
        18
    lieqishi  
       2018-02-12 16:00:11 +08:00
    我知道的情况,好像就两种吧?一种是 var,一种是 arr
    Cbdy
        19
    Cbdy  
       2018-02-12 16:02:09 +08:00 via Android
    iblessyou
        20
    iblessyou  
    OP
       2018-03-12 10:59:26 +08:00
    @guog 这帖子发了后都忘了, 的确就你正着,居然还有那么多人没理解是怎么回事。
    我考虑了下最后还是决定第二种了,和大家统一吧,不一样的风格别人修改也会有障碍
    Lee90
        21
    Lee90  
       2018-08-09 11:32:02 +08:00
    函数入参加尾后逗号,大部分 android webview 直接报错
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1018 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 19:38 · PVG 03:38 · LAX 11:38 · JFK 14:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.