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

2020 年 6 月 15 日
 guibin1989

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

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

@zhuweiyou 十几年前提倡过这种写法的.......
zhuweiyou
2020 年 6 月 16 日
@westoy 你看代码里的 a t m p 这些变量名,像是人写的?
maomaomao001
2020 年 6 月 16 日
var self = this ;

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

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

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

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

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

© 2021 V2EX