有趣(和学习)的棘手的JavaScript代码

时间:2015-05-04 14:51:07

标签: javascript

我承认,有一个简短的JavaScript代码,有点难以阅读。而且,它还有一项任务。这是代码:

x_ = _ = _y = love = null, _x = "x", _y = "y";
console.log(Infinity in window & !!0 == !!!1 & +~~_ + "" === _ ? _ + _x : _ + _y);

其中输出为nully。输出应为"值x" (其中value是love的值)。

Ps。:您只能在声明处更改love的值,不能更改其他内容。再一次:您可以给love任何值,但输出必须包含" x"最后,在love的价值之后。

修改 宣言中有一个错误的问题,已修复。

1 个答案:

答案 0 :(得分:1)

以下内容:

Infinity in window & !!0 == !!!1 & +~~_ + "" === _ ? _ + _x : _ + _y

您可以将括号括起来:

(Infinity in window & !!0 == !!!1 & +~~_ + "") === (_) (? _ + _x) : (_ + _y)

“窗口中的无限”是真的,!! 0是假的,!!! 1是假的,~~ _是0(这个,我不知道为什么)。所以左操作数给出:

true & false == false & +0 + ""

这给出了0.这并不严格等于null(_),所以:?运算符返回_ + _ y。操作(null +“y”)返回一个字符串,其中null被转换为“null”,因此你得到“nully”。