资讯专栏INFORMATION COLUMN

如何用JavaScript实现2+2=5?

Ilikewhite / 999人阅读

摘要:题目如何用实现答案如下。新建一个文件,然后把后缀名改为再用浏览器打开。会先后弹出两个对话框,依次显示,。所以谜底在这里,加号前面肉眼看起来像大写字母的变量,其实并不是,其进制编码为。

我大学毕业找工作时,经常做一些稀奇古怪的面试题。这不,给大家分享一道整蛊的面试题,它其实不能算一道正式的面试题,大家可以用它来捉弄你们那些程序员朋友。

题目:如何用JavaScript实现2+2=5?

答案如下。

新建一个txt文件,然后把后缀名改为.html, 再用浏览器打开。





会先后弹出两个对话框,依次显示6,5。

但是,第二个函数f里面,明明变量H被赋成了2, 2 + 2 应该等于4才对,为什么答案是5????

我们用Chrome开发者工具调试一下,看看到底有什么玄虚。

为什么函数f里有两个看起来一模一样的H,但是一个值为2,一个值为3?

到现在,肉眼已经不能帮助我们了。那么我们就请出winHex这款16进制文件编辑与磁盘编辑神奇出马。

先从百度上搜索ASCII,得知大写字母的H的十六进制编码为48.

然后我们用WinHex打开上述代码文件,果然发现了这个48的16进制编码对应了大写H。

同样,加号“+”的16进制编码是2B:

空格为20。

所以谜底在这里,加号前面肉眼看起来像大写字母H的变量“H",其实并不是H,其16进制编码为CE 97。它的值在函数f里赋为2,而大写H赋为3,2 + 3 = 5,所以弹出窗里我们看到的结果是5。

这道题其实并没有考察JavaScript里闭包等知识点,而是一个障眼法,恶作剧。

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

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

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

相关文章

  • 何用JavaScript手动实现一个栈

    摘要:所以,可以这样写利用数组的方法,就可以实现在栈顶末尾添加新的元素了。因为栈地内部使用数组保存元素,所以数组地就是栈的长度。实现方法,方法用来清空栈中所有的元素。感兴趣可以自行百度去了解原文链接行无忌的成长小屋如何用手动实现一个栈 什么是栈(Stack) showImg(https://segmentfault.com/img/remote/1460000015304781?w=400&...

    taoszu 评论0 收藏0
  • ES3/5模拟实现ES6块级作用域方式探究

    摘要:其中就包括定义块级作用域的关键字块级作用域如何用低版本模拟如何用低版本模拟加强版如何用低版本模拟自调用函数版 简述 在JavaScript编程中,当我们使用关键字var时,该变量是在距离最近的函数内部或是在全局词法环境中定义的,即函数作用域。这是JavaScript由来已久的特性,{}并不一定限制变量作用域的模式也困扰了许多从其他语言转向JavaScript的开发者。随着前端工程的发展...

    2bdenny 评论0 收藏0
  • 何用JavaScript判断前端应用运行环境(移动平台还是桌面环境)

    摘要:在前端应用里,有时候我们需要根据运行环境的不同做出对应处理。另一个重要的字段为下面这段不到行的代码通过使用正则表达式处理对象中的和字段来判断当前前端应用运行的环境,支持三种操作系统,等移动平台。执行后,会弹出检测出的运行环境和版本号。 我们部署在某些云平台或者Web服务器上的前端应用,既可以用PC端浏览器访问,也可以用手机上的浏览器访问。 在前端应用里,有时候我们需要根据运行环境的不同...

    zhiwei 评论0 收藏0

发表评论

0条评论

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