实习日志-3(javacript)
今天老师讲了一个比较有趣的东西:
++[[]][+[]]+[+[]]//‘10’
为什么是‘10’’!
第一眼看的时候完全蒙x
后来老师慢慢分析,大概解释如下:
(执行+运算时,[]->先转化为原始型 一: .valueof() 若没有num则进行 二 .toString());
上面的式子分为
++[[]][+[]] = 1
+
[+[]] = [0]
==> 1+’0’ => ‘10’
[]//[]
+[]//0
[+[]]//[0]
一个对象转化为原始型先调用valueof().若没有值,再调用toString();
特例
{}+[] //0
/*{}表示code block*/
({}+[])//"[object Object]"
/*当被()wrap时,{}表示Object*/