Javascript 的括号太多之后看不清层次 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
des
V2EX    Javascript

Javascript 的括号太多之后看不清层次

  •  
  •   des 2015-05-30 12:05:42 +08:00 via Android 7735 次点击
    这是一个创建于 3862 天前的主题,其中的信息可能已经有所发展或是发生改变。

    层次太多之后分不清哪个是哪个
    特别是在参数中直接传一个匿名函数,然后直接调用这个函数,里面又有其他逻辑,东西多了就有点分不清了
    各位都是怎么看的,有技巧吗?
    j

    48 条回复    2015-06-01 15:23:19 +08:00
    oott123
        1
    oott123  
       2015-05-30 12:16:48 +08:00
    coffeescript……

    如果只是看的话 换个好的 IDE 都有括号提示的
    hahasong
        2
    hahasong  
       2015-05-30 12:18:16 +08:00
    弃之,改写 python就没这个烦恼了
    des
        3
    des  
    OP
       2015-05-30 12:26:25 +08:00 via Android
    @oott123 IDE是有提示,但是某些情况还是看着晕
    funagi
        4
    funagi  
       2015-05-30 12:28:45 +08:00
    1. 换个好的IDE,如Webstorm;
    2. 用CoffeeScript辅助编写;
    3. 养成良好的习惯,避免过度嵌套,该隔开的隔开,该注释的注释。
    clino
        5
    clino  
       2015-05-30 12:29:24 +08:00 via Android
    缩进搞好点会不会比较好些
    des
        6
    des  
    OP
       2015-05-30 12:40:58 +08:00 via Android
    @funagi 小的js用webstom太慢,我用notepad++也不差啊,
    别人的代码你也不能强求吧,另外还有压缩过的,即使合适化了,有些也看着眼花
    funagi
        7
    funagi  
       2015-05-30 12:49:25 +08:00
    @des notepad++是不差,但顶多是瑞士军刀,比不上Webstorm这专业大杀器,太慢的话建议升级电脑,别亏待自己,当然没钱升级是另外一回事。
    既然是别人的代码,只能自己硬啃,多加点注释把代码段隔开,这种真的没多少技巧。
    aisk
        8
    aisk  
       2015-05-30 12:50:43 +08:00
    用 Promise 避免嵌套。
    oisc
        9
    oisc  
       2015-05-30 12:54:43 +08:00
    用两个空格缩进是趋势。。。。。逃)
    des
        10
    des  
    OP
       2015-05-30 13:02:28 +08:00 via Android   1
    @aisk 这个好

    @oisc 你的括号打反了 (逃
    des
        11
    des  
    OP
       2015-05-30 13:06:07 +08:00 via Android
    @oisc 到底是两个空格还是一个tab,另外空格也分全角和半角,反正都看不清… 感觉也是个坑
    oisc
        12
    oisc  
       2015-05-30 13:17:54 +08:00
    @des 空格党表示必须空格啊 ,写js还是应该想方法比如用then.js避免深层嵌套吧
    sudoz
        13
    sudoz  
       2015-05-30 13:40:57 +08:00
    代码风格很重要
    shiny
        14
    shiny  
    PRO
       2015-05-30 13:42:02 +08:00
    async.js、promise
    tux
        15
    tux  
       2015-05-30 13:47:29 +08:00
    {
    {
    {
    ;
    }
    }
    }
    zzetao
        16
    zzetao  
       2015-05-30 15:33:54 +08:00   1
    function a(){
    var b = {

    }//b end
    }//a end
    yyy
        17
    yyy  
       2015-05-30 16:48:24 +08:00
    推荐promise
    yimity
        18
    yimity  
       2015-05-30 16:50:40 +08:00 via Android
    这么多嵌套说明要重构成小函数了。
    imskull
        19
    imskull  
       2015-05-30 16:54:09 +08:00
    同建议promise,这个必须先完全熟练掌握,后面觉得多得话只能学会IDE高亮,超过一页就只能前后括号来回跳转着看了。
    scarlex
        20
    scarlex  
       2015-05-30 16:55:25 +08:00
    重构成多个小函数+1
    ikaros
        21
    ikaros  
       2015-05-30 17:45:38 +08:00
    同,即使有IDE或者编辑器提示是关闭哪个括号的,但是不能同时显示所有括号吧
    muzuiget
        22
    muzuiget  
       2015-05-30 17:51:39 +08:00
    这不就是回调地狱嘛,从代码格式(例如缩进,高亮对齐)下手都是治标,重构优化逻辑结构治本。

    有人还特意注册了一个网站,就还一篇文章 http://callbackhell.com/
    asj
        23
    asj  
       2015-05-30 17:52:34 +08:00 via iPad
    学lisp
    notcome
        24
    notcome  
       2015-05-30 18:29:29 +08:00 via iPhone
    用 PureScript 吧
    Ironsongming
        25
    Ironsongming  
       2015-05-30 19:05:36 +08:00 via iPhone
    赶紧写python去
    magicdawn
        26
    magicdawn  
       2015-05-30 20:51:15 +08:00
    lisp系笑而不语
    Gonster
        27
    Gonster  
       2015-05-30 20:59:40 +08:00
    @asj 学完lz要变成括号僵尸了^o^
    des
        28
    des  
    OP
       2015-05-30 21:58:33 +08:00 via Android
    @Gonster 想起特工偷代码的那个笑话了
    Gonster
        29
    Gonster  
       2015-05-30 22:05:21 +08:00
    @des 噗噗噗
    Axurez
        30
    Axurez  
       2015-05-30 22:20:30 +08:00
    ES6
    liran319
        31
    liran319  
       2015-05-30 22:46:39 +08:00
    @hahasong 论python缩进的好处XD
    gaotongfei
        32
    gaotongfei  
       2015-05-30 23:09:07 +08:00
    我也来说句, lisp大法好
    wolfan
        33
    wolfan  
       2015-05-30 23:11:02 +08:00
    听到python时我尽无言以对。
    karloku
        34
    karloku  
       2015-05-30 23:30:55 +08:00
    po主可以看我头像开心开心....
    zwy100e72
        35
    zwy100e72  
       2015-05-30 23:34:29 +08:00
    @liran319 缩进一删,代码就废
    论python的保密性(
    flashback313
        36
    flashback313  
       2015-05-30 23:46:56 +08:00
    Brackets 的括号高亮不错,喜欢 sublime 的话可以装一个 Brackets 的插件。
    luoway
        37
    luoway  
       2015-05-31 00:10:11 +08:00 via Android
    @hahasong
    @Ironsongming
    @liran319
    @zwy100e72

    学python 2还是3
    论python的版本兼容
    liran319
        38
    liran319  
       2015-05-31 00:31:14 +08:00
    @luoway 目前2的库还是丰富一些吧
    liran319
        39
    liran319  
       2015-05-31 00:32:35 +08:00
    @zwy100e72 保密完了要手动恢复也是基本无解啊
    jsq2627
        40
    jsq2627  
       2015-05-31 01:10:13 +08:00
    $(document).ready( function(){
    $("button").click( function(){
    $.get("demo_test.asp", function(data, status){
    alert("Data: " + data + "\nStatus: " + status); }); });
    jsq2627
        41
    jsq2627  
       2015-05-31 01:14:04 +08:00   1
    其实我要打的是这个样子的。
    easynoder
        42
    easynoder  
       2015-05-31 07:39:26 +08:00
    keep your code shallow
    skinqis
        43
    skinqis  
       2015-05-31 11:13:44 +08:00
    选个顺手的IDE, 写的时候注意换行和缩进, 层次还是很清晰的.
    上webstorm吧...个人感觉非常好用...各种高亮也是很符合习惯的
    tuoxie007
        44
    tuoxie007  
       2015-05-31 11:39:54 +08:00
    @jsq2627 你这样何苦呢,coffeescript很适合你
    joyee
        45
    joyee  
       2015-05-31 23:41:26 +08:00
    如果是callback hell造成的嵌套太多,CoffeeScript也没什么用的,不过就是从很多括号变成了很多缩进而已,如果你还是用2空格缩进,一样看得很痛苦……别人写的代码只能忍了,自己可控的代码可以用async/await/generator/promise/CPS逃离callback hell
    hxtheone
        46
    hxtheone  
       2015-06-01 13:54:52 +08:00
    @des 会有人在代码里用全角字符吗?
    des
        47
    des  
    OP
       2015-06-01 14:01:28 +08:00
    @hxtheone 比如有打中文的时候啊,一不小心忘了切回来……
    hxtheone
        48
    hxtheone  
       2015-06-01 15:23:19 +08:00
    @des 这也算。。一般遇到全角字符编译器/解释器就直接报错了吧?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3893 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 45ms UTC 00:57 PVG 08:57 LAX 16:57 JFK 19:57
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86