资讯专栏INFORMATION COLUMN

JavaScript (a == 1 && a == 2 && a

Mr_zhang / 3503人阅读

摘要:简评你认为这个问题是一个好的面试题吗在中可能为吗这个问题是国外一位求职者最近在面试一家大型科技公司时遇到的一个问题。这里给一个最高赞的答案自定义或者方法,每次调用改变一次返回值,从而满足判断条件。

简评:你认为这个问题是一个好的面试题吗?

在 JavaScript 中 (a ==1 && a== 2 && a==3) 可能为 true 吗?

这个问题是国外一位求职者最近在面试一家大型科技公司时遇到的一个问题。

他的回答是「不可能」,而面试方说「nothing is impossible」,然后就没有然后了。

虽然在实际工作中可能没人会写这样的代码,但题主还是放不下,苦思冥想了两个礼拜,终于还是决定在 Stack Overflow 上寻求解答。

大家可以先自己想一想。

...

...

...

这里给一个最高赞的答案:

自定义 toString(或者 valueOf)方法,每次调用改变一次返回值,从而满足判断条件。

const a = {
  i: 1,
  toString: function () {
    return a.i++;
  }
}

if(a == 1 && a == 2 && a == 3) {
  console.log("Hello World!");
}

当使用 == 时,如果两个参数的类型不一样,那么 JS 会尝试将其中一个的类型转换为和另一个相同。在这里左边对象,右边数字的情况下,会首先尝试调用 valueOf(如果可以调用的话)来将对象转换为数字,如果失败,再调用 toString。

其实,还有很多其他的实现,感兴趣的可以点击链接看看。

比如,我比较喜欢这个:

with({
  get a() {
    return Math.floor(Math.random()*4);
  }
}){
  for(var i=0;i<1000;i++){
    if (a == 1 && a == 2 && a == 3){
      console.log("after "+(i+1)+" trials, it becomes true finally!!!");
      break;
    }
  }
}
问题:Can (a ==1 && a== 2 && a==3) ever evaluate to true? reddit
讨论:Javascript: Can (a ==1 && a== 2 && a==3) ever evaluate to true? r/programming

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/107555.html

相关文章

  • 通过JavaScript实现扑克牌游戏的示例代码

      我们说下想要实现,一副牌里有54张,我们可以知道 3 - 2 的牌总共有13张,这分为4个花色是 ♠️ ♥️ ♣️ ♦️ 另外加上2个大小王!第一步:形成一个数组, 就要写一个函数,利用牌数量和花色,这样可以用来形成一个双重循环将 number 里面的内容 和 flower 里面的内容 进行一个循环嵌入?最后在用 push 生成一个对象放到数组的后面?再到最后放入 大小王 。  constnu...

    3403771864 评论0 收藏0
  • JavaScript数组的9个方法示例

      今天主要就是汇总JavaScript数组的9中不同方法汇总,也将详细示例展示给大家。  如果你还不知道数组实例中迭代方法有什么区别,可以看下面这张图:  map  代表返回一个新的数组,且数组中的每一项都是执行过map提供的回调函数结果。  实现代码如下:  constmap=(array,fun)=>{   //类型约束   if(Object.prototype.toString.c...

    3403771864 评论0 收藏0
  • JavaScript:(a==1 &amp;&amp; a==2 &amp;&amp; a==3)能

    摘要:我们举个例子我们可以对上述对象使用方法,他会返回一个对象。在我们的问题中会企图将对象转化成数字的类型,进行比较。幸运的是,在中有符号。当我们每次调用的时候,他会将变量增加返回给我们。 如果你能确切的答出可以,那恭喜你,你可以绕道了 前言 有人会说,这个问题好奇葩,放在别的语言里,这要是能输出true,估计是见鬼了,但是你别说,放在js中好真有可能。最近在一个人的推特上提了一个问题: ...

    light 评论0 收藏0
  • 详解Javascript的作用域、作用域链以及闭包

      一、我们先说说javascript的作用域  ①全局变量-函数体外部进行声明  ②局部变量-函数体内部进行声明  1)函数级作用域  javascript语言中局部变量不同于C#、Java等高级语言,在这些高级语言内部,采用的块级作用域中会声明新的变量,这些变量不会影响到外部作用域。  而javascript则采用的是函数级作用域,也就是说js创建作用域的单位是函数。  例如:  在C#当中我...

    3403771864 评论0 收藏0
  • JavaScript中让x==1&&x==2&&x==3等式成立演示

      要是别人问您:如何让 x 等于 1 且让 x 等于 2 且让 x 等于 3 的等式成立?  咋地,知道如何实现?想骂人有不  现在我们一起来分解思路:  我们先来讲讲宽松相等== 和严格相等 ===,这两个都能用来判断两个值是否相等,但们明确上文提到的等于指的是哪一种,二者的区别看下:  (1) 这两个基础直接的区别:  (1.1) 不同类型间比较,== 比较转化成同一类型后的值看值是否相等,...

    3403771864 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<