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

js 这几个括号连起来是怎么理解的?(非 js 开发)

  •  
  •   chu8129 · 2017-07-29 08:22:39 +08:00 · 3609 次点击
    这是一个创建于 2703 天前的主题,其中的信息可能已经有所发展或是发生改变。

    data: (0, u.transfer)((0, o.decode)(s.body.data.index[y], h), h)
    几个括号连起来是怎么理解的?也想不到什么关键字搜。。。
    平常用 py,完全看不懂这几个括号。。。

    for (var v = 0,m = l.keywordslist.length; v < m; v++) {
        var g = void 0,
        y = l.keywordslist[v];
        d.indexOf(y) >= 0 ? g = {
            query: y,
            disable: !0
        }: s.body.data.index[y] ? g = {
            data: (0, u.transfer)((0, o.decode)(s.body.data.index[y], h), h),
            query: y,
            disable: !1
        }: g = {
            query: y,
            disable: !0,
            badcase: !0
        },
        p.push(g)
    
    17 条回复    2017-10-31 17:37:50 +08:00
    secondwtq
        1
    secondwtq  
       2017-07-29 08:36:16 +08:00
    相当于 u.transfer(o.decode(s.body.data.index[y], h), h)

    另外这代码谁写的,抽时间请他吃个饭,记得下毒
    plqws
        2
    plqws  
       2017-07-29 08:38:18 +08:00
    我写了这么久 js 都没看出来是想要做什么,(x, y) 这种写法从来没见过。。。

    (0, u.transfer) 得到的是 u.transfer,应该是个 function
    后面的 o.decode 也是个 function
    化简后其实就是

    ```javascript
    u.transfer(o.decode(s.body.data.index[y], h), h)
    ```

    但是楼主代码里为何这么写的意义我是不太懂
    zjsxwc
        3
    zjsxwc  
       2017-07-29 08:43:25 +08:00
    看变量名,应该是生成的代码。
    secondwtq
        4
    secondwtq  
       2017-07-29 08:43:51 +08:00
    仔细看了一下这风格应该是 minify 过的,这样的话目的应该是调用 u.transfer 和 o.decode 两个函数但是不设置其为 this context
    skadi
        5
    skadi  
       2017-07-29 08:54:32 +08:00
    卧槽这头像,杰哥?
    ceoimon
        6
    ceoimon  
       2017-07-29 09:21:23 +08:00 via iPhone   ❤️ 2
    (1, obj.function) 可以把方法函数转换成普通函数( this 指向 global, 严格模式下为 undefined)。本质上是获取 obj.function 的“值”, 和 var f = obj.function 效果类似。主要应用场景是压缩代码。
    ceoimon
        7
    ceoimon  
       2017-07-29 10:02:36 +08:00
    SourceMan
        8
    SourceMan  
       2017-07-29 10:58:00 +08:00 via iPhone
    压缩之后的,并不是源码
    Nbsaw
        9
    Nbsaw  
       2017-07-29 15:09:29 +08:00
    这个三元也很骚
    weakish
        10
    weakish  
       2017-07-29 16:23:24 +08:00
    ·exp1 ? exp2 : exp3`,然后 exp 里面可以嵌套。

    > 平常用 py,完全看不懂这几个括号

    Python 里面一样有 exp2 if exp1 then exp3,同样可以写得很晦涩。
    autoxbc
        11
    autoxbc  
       2017-07-29 23:52:55 +08:00
    希望大家都不压缩代码,与人方便自己方便
    cagechan
        12
    cagechan  
       2017-07-30 09:42:25 +08:00
    这应该是用了特定的工具对源码进行了压缩和混淆...
    chu8129
        13
    chu8129  
    OP
       2017-10-31 17:34:33 +08:00
    @secondwtq 看的有点懵
    chu8129
        14
    chu8129  
    OP
       2017-10-31 17:35:04 +08:00
    @plqws 不是我写的,国内某知名网站
    chu8129
        15
    chu8129  
    OP
       2017-10-31 17:36:19 +08:00
    @weakish py 还有 and or 混的~~
    chu8129
        16
    chu8129  
    OP
       2017-10-31 17:36:55 +08:00
    @cagechan 感觉像是,有点反编译的感觉
    chu8129
        17
    chu8129  
    OP
       2017-10-31 17:37:50 +08:00
    @ceoimon 看来得稍微学习下 js 才看的懂了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   861 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:37 · PVG 05:37 · LAX 13:37 · JFK 16:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.