有一天,突然在一个微信群有个群友发了张图片抛出了一道题,如图:
下面,我们先还原原题:
//下面代码什么时候会打印1?
var a=?;
if(a==1&&a==2&&a==3){
console.log(1);
}
说实话,我第一眼看到时居然理所当然地认为让a=true或者a=!0应该就可以了,但是代码世界的种种复杂变数让我不能轻易相信第一感觉,于是马上打开电脑,在chrome浏览器的控制台快速敲下以下代码:
【a=true时】
var a=true;
if(a==1&&a==2&&a==3){
console.log("猜想正确:"+a);
}else{
console.log("猜想错误");
}
【a=!0时】
var a=!0;
if(a==1&&a==2&&a==3){
console.log("猜想正确:"+a);
}else{
console.log("猜想错误");
}
然后打印结果让我意识到错误的同时也激发了深入探索的兴趣:既然猜想错误,那到底要怎么做才能实现呢?背后的原理又会是怎样的呢?带着疑问,然后打开了百度上CSDN的一篇博客文章开始看。
文章一开头就说是一道有趣的面试题:Excuse Me?!惊愕之余就仔细品读了共有4种主要方法。接下来我结合自己的理解尽力将4种方法的原理给解释一下,如有错误,请多多指