您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

(a == 1 && a == 2 && a == 3)可以评估为真吗?

(a == 1 && a == 2 && a == 3)可以评估为真吗?

如果你趁如何==工作,你可以简单地创建一个自定义的对象toString(或valueOf改变它使用它,使得它满足所有这三个条件,每次返回)功能

const a = {

  i: 1,

  toString: function () {

    return a.i++;

  }

}



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

  console.log('Hello World!');

}

之所以起作用,是因为使用了松散的相等运算符。使用宽松相等时,如果其中一个操作数的类型不同于另一个,则引擎将尝试将一个转换为另一个。如果对象在左侧,数字在右侧,则它将尝试通过首先调用对象(valueOf如果可调用)将其转换为数字,否则将调用toStringtoString在这种情况下,我之所以使用它,仅仅是因为它浮现在脑海中,才valueOf更有意义。如果我改为从返回一个字符串toString,则引擎将尝试将该字符串转换一个数字,使我们得到相同的最终结果,尽管路径略长。

其他 2022/1/1 18:16:34 有444人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶