JavaScript表达式

20 浏览
0 Comments

JavaScript表达式

这个问题在这里已经有答案:

为什么++[[]][+[]]+[+[]]返回字符串\"10\"?

有人能帮我解决这个JavaScript表达式吗?

+[[+!![]]+[+![]]+[+!![]]+[-~!![]+-~!![]-~!![]]+[-~!![]]+[+![]]+[+!![]]+[-~!![]+-~!![]]]

一个朋友把它发送给我,并要求我将其复制并粘贴到浏览器控制台中。

以下是结果:

10162014

如果有人能解释给我这个问题,或者至少指向正确的参考资料,谢谢!

admin 更改状态以发布 2023年5月21日
0
0 Comments

![] = false; #作为表达式,由于!操作符,它的值是false
[] = true; #作为表达式,它被定义了,所以它的值是true

+!![] = 1; 因为+true = 1;
+![] = 1; 因为+true = 0,因为在JS中使用+运算符会将布尔值转换为整数ref

所以他所做的基本上是使用布尔值整数的转换构造一个数值,并进行了一些分组。

0
0 Comments

首先将代码拆分为!![] ,它返回true(!!是用来转换为布尔值),然后+将其转换为数值,因此+!![]返回1。\n\n![]转换为false,因此+![]返回0。\n\n~[]返回-1~![]也返回-1。\n\n~!![]返回-2。\n\n现在,-~!![]返回2-~![]返回1。\n\n因此,将它们结合起来返回10162014。\n\n你需要了解的都在这里:~,!,+和 -

0