V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
colorsand
V2EX  ›  JavaScript

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

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

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

    减小体积和防止直接泄露代码
    magicdawn
        19
    magicdawn  
       2015-08-02 19:41:51 +08:00
    @ChiChou

    明明是 饿了么ELEME
    ChiChou
        20
    ChiChou  
       2015-08-02 19:54:02 +08:00
    @magicdawn eleme 用的腾讯地图的 API,没错啊。
    guogb
        21
    guogb  
       2015-08-02 21:43:18 +08:00
    混淆了吧
    cee99
        22
    cee99  
       2015-08-03 07:41:40 +08:00
    你看,你自己都说是看起来复杂,所以奋斗吧,骚年.....
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2666 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 05:00 · PVG 13:00 · LAX 21:00 · JFK 00:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.