在我的时事通讯中看到了这一点.在Chrome和Firefox上测试过.我还是想不出来.
[]+(-~{}-~{}-~{}-~{})+(-~{}-~{}); //=> "42"
Run Code Online (Sandbox Code Playgroud)
评估:
~{}
Run Code Online (Sandbox Code Playgroud)
使用内部函数进行评估:
~ToInt32({})
Run Code Online (Sandbox Code Playgroud)
给出-1.
参考ECMA规范 - http://www.ecma-international.org/ecma-262/5.1/#sec-9.5 和此解释 - http://jibbering.com/faq/notes/type-conversion/#tcToInt32
因此,在这种情况下
(-~{}-~{}) == 2
(-~{}-~{}-~{}-~{}) == 4
Run Code Online (Sandbox Code Playgroud)
就像你[]+在表达式的开头一样,javascript使用加上像string这样的操作数.所以你有了"" + "4" + "2" = "42"
| 归档时间: |
|
| 查看次数: |
405 次 |
| 最近记录: |