首页 > JavaScript > (a== 1 && a ==2 && a==3) 的计算结果能不能为 true?

(a== 1 && a ==2 && a==3) 的计算结果能不能为 true?

上一篇 下一篇

有没有可能在 JavaScript 中评估?(a== 1 && a ==2 && a==3)true

这是一家大型科技公司提出的面试问题。它发生在两周前,但我仍在努力寻找答案。我知道我们在日常工作中从不写这样的代码,但我很好奇。

分割线

网友回答:

我无法抗拒 – 其他答案无疑是正确的,但你真的无法跳过以下代码:

var aᅠ = 1;
var a = 2;
var ᅠa = 3;
if(aᅠ==1 && a== 2 &&ᅠa==3) {
    console.log("Why hello there!")
}

请注意语句中奇怪的间距(我从您的问题中复制的)。它是半角韩文(对于那些不熟悉的人来说是韩语),它是一个 Unicode 空格字符,不会被 ECMA 脚本解释为空格字符——这意味着它是标识符的有效字符。因此,有三个完全不同的变量,一个在a之后有韩文,一个在a之前有韩文,最后一个只有a。为了便于阅读,将空格替换为,相同的代码如下所示:if_

var a_ = 1;
var a = 2;
var _a = 3;
if(a_==1 && a== 2 &&_a==3) {
    console.log("Why hello there!")
}

查看 Mathias 变量名验证器上的验证。如果这个奇怪的间距真的包含在他们的问题中,我确信这是对这种答案的暗示。

别这样。认真地。

编辑:我注意到(虽然不允许开始变量)零宽度连接器和零宽度非连接器字符也允许在变量名称中 – 请参阅用零宽度字符混淆JavaScript – 优点和缺点?。

这将如下所示:

var a= 1;
var a‍= 2; //one zero-width character
var a‍‍= 3; //two zero-width characters (or you can use the other one)
if(a==1&&a‍==2&&a‍‍==3) {
    console.log("Why hello there!")
}

分割线

网友回答:

如果您利用工作方式,您可以简单地创建一个带有自定义(或)函数的对象,该函数在每次使用时都会更改它返回的内容,以便它满足所有三个条件。==toStringvalueOf

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

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

这样做的原因是由于使用了松散相等运算符。使用松散相等时,如果其中一个操作数的类型与另一个操作数不同,引擎将尝试将一个操作数转换为另一个操作数。如果对象在左边,一个数字在右边,它将尝试通过首先调用对象来将对象转换为数字(如果它是可调用的),否则,它将调用 .我在这种情况下使用只是因为它想到的,会更有意义。如果我从 返回一个字符串,引擎将尝试将字符串转换为一个数字,给我们相同的最终结果,尽管路径稍长。valueOftoStringtoStringvalueOftoString

分割线

网友回答:

这是可能的!

var i = 0;

with({
  get a() {
    return ++i;
  }
}) {
  if (a == 1 && a == 2 && a == 3)
    console.log("wohoo");
}

这在语句中使用 getter 来计算三个不同的值。witha

…这仍然不意味着这应该在实际代码中使用……

更糟糕的是,这个技巧也适用于使用 .===

  var i = 0;

  with({
    get a() {
      return ++i;
    }
  }) {
    if (a !== a)
      console.log("yep, this is printed.");
  }

模板简介:该模板名称为【(a== 1 && a ==2 && a==3) 的计算结果能不能为 true?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【JavaScript】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 190次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 03-09
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
单页式简历模板 微信文章 微信模板 自适应 企业网站 微信素材 微信图片 响应式 html5 微信公众平台
您可能会喜欢的其他模板