0%

44个 Javascript 变态题解析 (下)

承接上篇 44个 Javascript 变态题解析 (上)

第23题


​ [1 < 2 < 3, 3 < 2 < 1]

这个题也还可以.

这个题会让人误以为是 2 > 1 && 2 < 3 其实不是的.

这个题等价于


​ 1 < 2 => true;
​ true < 3 => 1 < 3 => true;
​ 3 < 2 => false;
​ false < 1 => 0 < 1 => true;

答案是 [true, true]

第24题


​ // the most classic wtf
​ 2 == [[2]]

这个题我是猜的. 我猜的 true, 至于为什么…

both objects get converted to strings and in both cases the resulting string is "2" 我不能信服…

第25题


​ 3.toString()
​ 3…toString()
​ 3…toString()

这个题也挺逗, 我做对了 :) 答案是 error, '3', error

你如果换一个写法就更费解了


​ var a = 3;
​ a.toString()

这个答案就是 '3';

为啥呢?

因为在 js 中 1.1, 1., .1 都是合法的数字. 那么在解析 3.toString 的时候这个 .
到底是属于这个数字还是函数调用呢? 只能是数字, 因为3.合法啊!

第26题


​ (function(){
​ var x = y = 1;
​ })();
​ console.log(y);
​ console.log(x);

答案是 1, error

y 被赋值到全局. x 是局部变量. 所以打印 x 的时候会报 ReferenceError

<