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)
![]() | 1 secondwtq 2017-07-29 08:36:16 +08:00 相当于 u.transfer(o.decode(s.body.data.index[y], h), h) 另外这代码谁写的,抽时间请他吃个饭,记得下毒 |
![]() | 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) ``` 但是楼主代码里为何这么写的意义我是不太懂 |
![]() | 3 zjsxwc 2017-07-29 08:43:25 +08:00 看变量名,应该是生成的代码。 |
![]() | 4 secondwtq 2017-07-29 08:43:51 +08:00 仔细看了一下这风格应该是 minify 过的,这样的话目的应该是调用 u.transfer 和 o.decode 两个函数但是不设置其为 this context |
![]() | 5 skadi 2017-07-29 08:54:32 +08:00 卧这头像,杰哥? |
6 ceoimon 2017-07-29 09:21:23 +08:00 via iPhone ![]() (1, obj.function) 可以把方法函数转换成普通函数( this 指向 global, 严格模式下为 undefined)。本质上是获取 obj.function 的“值”, 和 var f = obj.function 效果类似。主要应用场景是压缩代码。 |
7 ceoimon 2017-07-29 10:02:36 +08:00 @ceoimon #6 好像 Global eval 也用得比较多 See: http://perfectionkills.com/global-eval-what-are-the-options/#indirect_eval_call_theory |
![]() | 8 SourceMan 2017-07-29 10:58:00 +08:00 via iPhone 压缩之后的,并不是源码 |
![]() | 9 Nbsaw 2017-07-29 15:09:29 +08:00 这个三元也很骚 |
![]() | 10 weakish 2017-07-29 16:23:24 +08:00 exp1 ? exp2 : exp3`,然后 exp 里面可以嵌套。 > 平常用 py,完全看不懂这几个括号 Python 里面一样有 exp2 if exp1 then exp3,同样可以写得很晦涩。 |
![]() | 11 autoxbc 2017-07-29 23:52:55 +08:00 希望大家都不压缩代码,与人方便自己方便 |
12 cagechan 2017-07-30 09:42:25 +08:00 这应该是用了特定的工具对源码进行了压缩和混淆... |