为什么 js 的代码看起来特别复杂? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
colorsand

为什么 js 的代码看起来特别复杂?

  •  
  •   colorsand 2015 年 8 月 2 日 5989 次点击
    这是一个创建于 3918 天前的主题,其中的信息可能已经有所发展或是发生改变。
    22 条回复    2015-08-03 07:41:40 +08:00
    colorsand
        1
    colorsand  
    OP
       2015 年 8 月 2 日   1
    edire
        2
    edire  
       2015 年 8 月 2 日   1
    这是加密压缩过的js代码。
    sox
        3
    sox  
       2015 年 8 月 2 日   1
    这是人写的代码?
    banri
        4
    banri  
       2015 年 8 月 2 日 via Android   1
    丑化过了
    an168bang521
        5
    an168bang521  
       2015 年 8 月 2 日   1
    这个是压缩过的代码,写绑定事件之类的功能;你可以在d前面敲一个回车,看起来就更清爽了;d.prototype.XXXX是在d的原型上写方法;里面的this关键字,是指谁执行这个方法,this就指谁,没有执行前只是一个空指针;其实你只要理清思路,然后看这个代码就并不复杂的了;你可以试着模仿jQuery写自己的类库;最多写几十个方法,然后找个压缩工具,压缩自己的类库;然后你再解读你自己的类库;你会非常容易就能看懂自己压缩后的类库(自己写的,自己当然能看懂);再然后你回头看下这段代码,你会发现,就那么点东西;你发的这个图应该是在控制台,点展开后截图下来的,你可以复制到webstorm里再看;也能帮助你理解的;
    ttma1046
        6
    ttma1046  
       2015 年 8 月 2 日   1
    用chrome dev tools打开,按下美化键
    feiyuanqiu
        7
    feiyuanqiu  
       2015 年 8 月 2 日
    还真不像 uglify 之后的,还真像人写的...
    好多变量名函数名都没改,短变量名选择的字母看起来也像是有意义的,比如 markerSize: {w: 23, h:35}
    SilentDepth
        8
    SilentDepth  
       2015 年 8 月 2 日
    @feiyuanqiu 是提供给外部的接口吧。函数内变量都abcde了,应该是uglify后的产物
    ChiChou
        9
    ChiChou  
       2015 年 8 月 2 日
    @feiyuanqiu 这个当然丑化过了。变量成员名为了防止代码出错没有缩短。

    顺便告诉你们这是 leaflet.js 里面的代码片段,不要问我怎么看出来的……
    ChiChou
        10
    ChiChou  
       2015 年 8 月 2 日
    好吧应该是腾讯地图? - -
    chairuosen
        11
    chairuosen  
       2015 年 8 月 2 日
    @feiyuanqiu var a,b,c;谁这么写代码会被队友打死的
    lvfujun
        12
    lvfujun  
       2015 年 8 月 2 日
    因为这是压缩后的代码......
    tushiner
        13
    tushiner  
       2015 年 8 月 2 日
    变量名替换为简单字符,起到了压缩和混淆的目的
    colorsand
        14
    colorsand  
    OP
       2015 年 8 月 2 日
    @lvfujun
    @tushiner
    压缩过的能解压缩吗?
    mani
        15
    mani  
       2015 年 8 月 2 日
    @colorsand 当然不能了,只能美化下格式。
    SilentDepth
        16
    SilentDepth  
       2015 年 8 月 2 日   1
    @colorsand 貌似可以(记得以前见过JS反混淆工具),但不理想。计算机可以处理一些约定俗成的东西,但其他的就无能为力。(代码反混淆用AI,不敢想象……)
    但格式化一下还是很简单的,然后如果代码不很庞大的话,利用refactor工具手动解密也不是不可行。
    lvfujun
        17
    lvfujun  
       2015 年 8 月 2 日
    @colorsand 不可能解压缩的......
    virusdefender
        18
    virusdefender  
       2015 年 8 月 2 日
    这是压缩和混淆过的 js

    减小体积和防止直接泄露代码
    magicdawn
        19
    magicdawn  
       2015 年 8 月 2 日
    @ChiChou

    明明是 饿了么ELEME
    ChiChou
        20
    ChiChou  
       2015 年 8 月 2 日
    @magicdawn eleme 用的腾讯地图的 API,没错啊。
    guogb
        21
    guogb  
       2015 年 8 月 2 日
    混淆了吧
    cee99
        22
    cee99  
       2015 年 8 月 3 日
    你看,你自己都说是看起来复杂,所以奋斗吧,骚年.....
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     897 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 73ms UTC 19:49 PVG 03:49 LAX 12:49 JFK 15:49
    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