微信二维码
微博二维码
qq号二维码

面试题:js中a能同时等于1\2\3

夏磊银 2020.01.17 73人浏览
JavaScript中a==1&&a==2&&a==3返回true

JavaScript有一道面试题是:写一个方法让a==1&&a==2&a==3返回值为真值。

很多小伙伴看到后都会感到蒙圈,这都是什么呀,变量值不是只能是一个么?为什么能同时等于三个值呀?


其实,这道面试题是在考察你对valueOf()获取原始值方法。


下面我来看两种方式


第一种:

var a={

i:1,

valueOf:function(){

return this.i++;

        }

}

if (a==1&&a==2&&a==3) {

console.log("success");

}

这里的方法是将对象object的valueOf进行重写,每次返回值为a的i值,同时进行自增加,这样每进行一次对比都会获取a的原始值,其实就是调用valueOf方法获得值进行对比,每次调用都会让对应a的i值进行增加,这样就可以让a与1、2、3同时相等。

var aᅠ = 1;

var a = 2;

var ᅠa = 3;

if(aᅠ==1 && a== 2 &&ᅠa==3) {

console.log("Why hello there!");

}

第二种方法是利用特殊的空格来区分不同的变量,看上去都是a,但是是不同的三个变量,一个是aᅠ,一个是a,一个是ᅠa;这样就可以让三个看起来都是a的变量等于1、2、3


总结下来就是你只需要理解valueOf就能实现了




分享到:
UI面试常见问题,你了解多少
  • 2019.07.11
  • 地坪漆的常见问题
  • 2020.02.27
  •