stackoverflow 上看到一道题 Can (a ==1 && a== 2 && a==3) ever evaluate to true?
题目大致是:
1 | if(a == 1 && a == 2 && a == 3) { |
解答
这道题稍有点经验,并不难。
主要是单年网易前端微专业有考过
toString
的题目。我被坑过…
答案简单明了:
1 | var a = { |
当然,用
valueOf
toString
都是可以的。
看了下别人的回复,基本上主流都是这个思路,写法稍有不同而已。
其他的解法
对象法
1 | var val = 0; |
和上面一样,也很容易想到,尤其是现在 MVVM 框架遍地开花的时代,就是书写量感觉有点大…还有个我自认为经常拼错的单词。
还有一种 ES6 的写法,这个我没在全局 window 上用过,没想到用 with
处理,所以也很喜欢:
1 | var i = 0; |
数组法
1 | a = [1,2,3]; |
方法清新,只不过是不用字符串和对象实现了,换成了数组。其实思路也是大同小异,不过很有创意。
编码法
以下方案,都是编码障眼法
我自认为这个是最流氓的写法:
1 | var aᅠ = 1; |
简言之,你看着是一个变量 a
,其实是三个变量,就是编码不同而已,长得和 a
一样。
虽然我知道这种写法,但是自己不会写…具体可以看 SOF 上的解答,因为我觉得没用,所以也不打算去了解学习。
你以为这么写就完了?还有更变态的:
1 | var a = 1; |
山不转水转,数字正常来讲是不能当作变量名字的,但是…你懂的…
如果到这里就算完了,那怎么行?
1 | var a = 9; |
流氓耍到底…看到这个解法时候,我真的是…😂
这个一样,是特殊的字符 if
,否则正常是不让重写保留词汇的…
由于 js 不能操作双等号,所以就不粘贴了。如果是 Ruby,竟然还可以定义双等号…
最完美答案
这个答案我认为是最完美的,可惜 SOF 赞同只有几十票…可惜了。
1 | a = 100000000000000000 |