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

2017-07-29 08:22:39 +08:00
 chu8129

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)
3423 次点击
所在节点    JavaScript
17 条回复
secondwtq
2017-07-29 08:36:16 +08:00
相当于 u.transfer(o.decode(s.body.data.index[y], h), h)

另外这代码谁写的,抽时间请他吃个饭,记得下毒
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
2017-07-29 08:43:25 +08:00
看变量名,应该是生成的代码。
secondwtq
2017-07-29 08:43:51 +08:00
仔细看了一下这风格应该是 minify 过的,这样的话目的应该是调用 u.transfer 和 o.decode 两个函数但是不设置其为 this context
skadi
2017-07-29 08:54:32 +08:00
卧槽这头像,杰哥?
ceoimon
2017-07-29 09:21:23 +08:00
(1, obj.function) 可以把方法函数转换成普通函数( this 指向 global, 严格模式下为 undefined)。本质上是获取 obj.function 的“值”, 和 var f = obj.function 效果类似。主要应用场景是压缩代码。
ceoimon
2017-07-29 10:02:36 +08:00
SourceMan
2017-07-29 10:58:00 +08:00
压缩之后的,并不是源码
Nbsaw
2017-07-29 15:09:29 +08:00
这个三元也很骚
weakish
2017-07-29 16:23:24 +08:00
·exp1 ? exp2 : exp3`,然后 exp 里面可以嵌套。

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

Python 里面一样有 exp2 if exp1 then exp3,同样可以写得很晦涩。
autoxbc
2017-07-29 23:52:55 +08:00
希望大家都不压缩代码,与人方便自己方便
cagechan
2017-07-30 09:42:25 +08:00
这应该是用了特定的工具对源码进行了压缩和混淆...
chu8129
2017-10-31 17:34:33 +08:00
@secondwtq 看的有点懵
chu8129
2017-10-31 17:35:04 +08:00
@plqws 不是我写的,国内某知名网站
chu8129
2017-10-31 17:36:19 +08:00
@weakish py 还有 and or 混的~~
chu8129
2017-10-31 17:36:55 +08:00
@cagechan 感觉像是,有点反编译的感觉
chu8129
2017-10-31 17:37:50 +08:00
@ceoimon 看来得稍微学习下 js 才看的懂了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/378760

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX