JavaScript Expression
JavaScript Expression
谁能帮我这个JavaScript表达式?
+[[+!![]]+[+![]]+[+!![]]+[-~!![]+-~!![]-~!![]]+[-~!![]]+[+![]]+[+!![]]+[-~!![]+-~!![]]]
一个朋友把它发给我,让我在浏览器控制台中复制并粘贴它。
结果如下:
10162014
如果有人可以向我解释这一点,或者至少指出我正确的参考资料。谢谢!
首先将您的代码分解为以下内容:返回 true 的!![]
(!! 是转换为布尔值(,现在+
转换为数字,因此+!![]
返回 1。
![]
转换为 false,因此+![]
返回 0。
~[]
返回-1
,~![]
也返回-1
。
~!![]
返回-2
.
现在,-~!![]
返回 2
,-~![]
返回 1。
因此,将它们全部组合起来会返回10162014。
所有关于你知道的是~,!,+和-
![] = false;
#
作为表达式,由于操作!
,它是假的 [] = true;
#
作为一个表达式,它是定义的,所以它是true
+!![] = 1;
因为+true = 1;
+![] = 1;
因为+true = 0
,因为在 JS 中使用 +
运算符将布尔值转换为整数 ref
所以他所做的基本上是用boolean
来构造一个数值,integer
转换,并进行一些分组。
[+!![]]+[+![]]+[+!![]]
: []
是一个空数组,这是真实的。 因此,![]
是假的,!![]
是真的。 +true
强制将其强制为一个数字,如1
.同样,对于+![]
,通过false
0
。
[-~!![]+-~!![]-~!![]]
:~
是二的补码运算符; ~1
-2
.因此,这计算为 -(-2)+-(-2)+-(-2)
,即6
。
其余的增补是类似的。
array + array
会将数组转换为字符串;因此[1]+[0]+[1]+[6]...
会给字符串"1016..."
开头的加号会将其转换为数字。
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 借助asp.net验证或java脚本对多个文本进行验证
- java.net和javascript之间正则表达式的差异
- 如何从Java/scala调用js美化程序
- 如何使用json将对象列表从java转换为javascript
- Java脚本时间添加
- WebDriverException:tinyMCE未在selenium Web driver java中定义
- 如何将字符串值从php页面发送到java脚本页面
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 如何轻松地将服务器端变量从Java代码转移到客户端代码
- DOM事件通过JSON转换为java
- 在 Java 中的 JavaScript 函数中插入 Wicket 值
- JSON分析错误:Java中AJAX、Javascript和Servlet的意外EOF
- java脚本在Chrome和其他浏览器中对LocaleTimeString的不同行为
- 错误405:向Java控制器(Ajax)发送JSON时找不到POST方法
- Java-彩票统计解析器
- 如何将变量数据从Java类获取到JavaScript
- Java脚本将URL转换为已保存的URL时出错
- 将这些正则表达式从javascript转换为Java
- 如何使用Java脚本创建提交按钮's的拖放功能