不懂就问,在某公司提供的 demo 中看到这种写法,有什么作用?

2020-06-15 17:50:59 +08:00
 guibin1989

8065 次点击
所在节点    JavaScript
40 条回复
zhuweiyou
2020-06-16 00:50:58 +08:00
这个一看就是压缩过的代码,再格式化出来的。
!1 就是 false 的意思,可以省几个字符,如果是人工写的,不可能这样写。
AFuture
2020-06-16 00:54:30 +08:00
歪楼,询问高亮主题。
no1xsyzy
2020-06-16 02:36:13 +08:00
@autoxbc #19 有可能是 AST 内做混淆,不一定要做字符串级混淆
看图中 L1,参数已经是 a, t, e 了。
ByZHkc3
2020-06-16 03:03:53 +08:00
想知道这是反编译了哪个微信小程序?
Cbdy
2020-06-16 07:38:34 +08:00
这是生成的代码吧
smilenceX
2020-06-16 08:09:09 +08:00
@fox0001 @dawn009 谢谢两位指出来。
hantsy
2020-06-16 08:45:06 +08:00
!!两一起我觉得还是很多用法。一个单独用,少见。
BreezeInWind
2020-06-16 08:58:08 +08:00
最后那个 playbutton 的逻辑还需要用 if 写成两段吗。。
ychost
2020-06-16 09:26:22 +08:00
ugly 的结果
guolaopi
2020-06-16 09:34:09 +08:00
非零即真零即假。
1 不是零,所以是真,!1 就是假
takemeaway
2020-06-16 10:28:21 +08:00
明明是混淆过的,还强行解释。
s1ro6
2020-06-16 10:45:57 +08:00
!0 或 !1 保证结果是布尔类型的,比直接写布尔值 true/false 简洁方便一点。
true 和 !0 几乎在任何时候都是相同的,但 true 和 1 在很多时候是不同的(例如 React 的 JSX 组件)~
whoami9894
2020-06-16 10:59:14 +08:00
如果真是混淆过的,那这混淆工具水平不太行
westoy
2020-06-16 11:09:39 +08:00
@smilenceX

!1 等效于!!0, 不等效于 0

@zhuweiyou 十几年前提倡过这种写法的.......
zhuweiyou
2020-06-16 12:00:18 +08:00
@westoy 你看代码里的 a t m p 这些变量名,像是人写的?
maomaomao001
2020-06-16 12:27:06 +08:00
var self = this ;

明显就不可能是 uglifyjs 出来的
NasirQ
2020-06-16 13:54:38 +08:00
1. 这是用来转成布尔型的。(类似的 1+'' 数字转字符串)。
2. 看参数和变量是混淆后的代码,是系统转的。源代码应该就是 !1 --> false ;!0 --> true
当然,也可能是写 true 、false 要敲多次键盘 [狗头]~
galikeoy
2020-06-16 15:02:00 +08:00
@maomaomao001 #36 这个就有点奇怪
Tdy95
2020-06-16 16:53:54 +08:00
写这代码要被锤死的吧,额外增加阅读负担,想少敲几个字母的,vscode 的代码提示不香吗
murmur
2020-06-16 16:55:20 +08:00
用压缩后的代码再格式化当 demo,这是什么公司这么坑人

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

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

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

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

© 2021 V2EX