如何用JavaScript实现2+2=5?
我大学毕业找工作时,经常做一些稀奇古怪的面试题。这不,给大家分享一道整蛊的面试题,它其实不能算一道正式的面试题,大家可以用它来捉弄你们那些程序员朋友。
题目:如何用JavaScript实现2+2=5?
答案如下。
新建一个txt文件,然后把后缀名改为.html, 再用浏览器打开。
<html> <script> g = function () { H = 3 return H + H } f = function () { Η = 2 return Η + H } // 3 + 3 = 6 alert(g()) // 2 + 2 = 5 alert(f()) </script> </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的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
[kata](5kyu) 约瑟夫战死排序(排列)
之前一直不懂,今天百度了下,发下kyu是级别的意思,dan是段的意思,级别数值越小越强,段数数值越大越强. 原题 https://www.codewars.com/kata/josephus-permutation/train/java 第一道5kyu题,做得有点艰难 今天又点了一道5kyu的题,测试通过了,但是解题只是求出了多个数值(传入list)的最小公倍数,而不是传入的表示形式上的分子/分母的公共分母,没有考虑到即使分母/分子不是正整数,但乘以分子可能得到正整数的可能. 原题 http://www.codewars.com/kata/common-denominators/train/java 今天看了下慕课MOOC的java进阶分数73+可以拿实体证书,但是取证时间过了3天,算了吧,就当昨天100RMB买的健身次卡抵消这次100取证的钱花销了吧!~ 上题的要求是公共分母而不是多个数值的最小公倍数, 还是有区别的. 比如下列: lst = new long[][] { {1, 131}, {5, 130} };lst = new long[][] { {1,100},{2,50...
- 下一篇
通过Java代码实现图片的放大和缩小
本文介绍的例子在Android安卓手机上测试通过。 先看看效果吧。可以看到这个开发好的安卓应用有三个按钮:Zoom In缩小图片,Zoom Out放大图片和Save保存。 初始页面: 可以在左边边框自由移动图片,图片下面的调试界面debug screen会显示详细的图片矩阵matrix信息: 点击Save button后,根据左边图片的最新状态,会创建一个镜像文件Snapshot并显示在右边的ImageView控件里: 点击Zoom in按钮可以使图片缩小: 点击Zoom out使图片放大: 这个用Java开发的安卓应用完整代码: https://github.com/i042416/image_zoom.git 要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Red5直播服务器,属于Java语言的直播服务器
- Linux系统CentOS6、CentOS7手动修改IP地址
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,CentOS7官方镜像安装Oracle11G