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

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

答案如下。

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

<html><script>g = function () {H = 3return H + H}f = function () {Η = 2return Η + H}// 3 + 3 = 6alert(g())// 2 + 2 = 5alert(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的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

如何用JavaScript实现2+2=5?相关推荐

  1. 如何用JavaScript的回调函数做出承诺

    by Adham El Banhawy 由Adham El Banhawy 如何用JavaScript的回调函数做出承诺 (How to make a Promise out of a Callbac ...

  2. 如何用JavaScript手动实现一个栈

    什么是栈(Stack) 栈是一种遵从后进先出(LIFO)原则的有序集合. 新添加的或待删除的元素都保存在栈的末尾,称为栈顶,另一端叫栈底. 在栈里,新元素都靠近栈顶,旧元素都接近栈底 现实中的例子 在 ...

  3. 如何用javascript获取文本框,下拉框,单选框的对应值或者将值赋给它们?雪原虎 发布于:2007-10-22 00:32

    如何用javascript获取文本框,下拉框,单选框的对应值或者将值赋给它们? 雪原虎 发布于:2007-10-22 00:32 1.文本框 1.1 <input type="text ...

  4. 一步一步学Silverlight 2系列(22):在Silverlight中如何用JavaScript调用.NET代码_转载...

    概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...

  5. 一步一步学Silverlight 2系列(22):在Silverlight中如何用JavaScript调用.NET代码

    概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...

  6. 在asp.net中如何用javascript读取本地Xml中的数据到网页中的文本框?

    在asp.net中如何用javascript读取本地Xml中的数据到网页中的文本框? 转载于:https://www.cnblogs.com/dynasty/archive/2005/08/18/21 ...

  7. 如何用JavaScript实现2+2=5? 1

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

  8. js 延期执行_如何用javascript设置延时执行

    152 **** **** 如何用javascript设置延时执行 一.什么叫做JavaScript 的计时事件 使用JavaScript可以实现代码的延时执行,也就是说当一个函数被调用时不立即执行某 ...

  9. 如何用javascript api for arcgis调用有参数的GP服务

    如何用javascript api for arcgis调用有参数的GP服务 javascript代码:(个别变量没有说明,大家就就看看大概思路就好了,这是我的完整代码) 1 var linesCan ...

最新文章

  1. iOS开发小技巧--利用苹果官方API播放视频(方法已经过时,了解一下)
  2. 【计算机视觉】森林火灾检测-1
  3. python十二:字符串格式化
  4. 【CTF大赛】2021 DASCTF July cybercms 一探再探
  5. HDU3507 Print Article —— 斜率优化DP
  6. 贪心算法设计作业调度c语言,贪心算法 - 数据结构与算法教程 - C语言网
  7. Mac下node.js卸载方法收集
  8. Qt4_读取和写入文本
  9. 主机和虚拟机复制粘贴失效的解决方案
  10. 【学习笔记】尚硅谷大数据项目之Flink实时数仓---DWD和DIM
  11. 《WiscKey: Separating Keys from Values in SSD-conscious Storage》阅读笔记
  12. 1080p和1080i
  13. 能源预测:回顾与展望(IEEE论文)
  14. [cesium] | 3d特效渲染
  15. 魅魔php影视系统,魅魔全新且强大的视频电影程序(MacCMS PHP) 6.1 20120511
  16. 对于iphone X 兼容性处理的css适配方法和js适配方法
  17. 面向移动互联网和物联网应用的下一代移动通信
  18. 2020-web前端-JavaScript基础笔记
  19. linux面板切换快捷键,Fedora 25 Gnome常用快捷键、快捷操作
  20. plc300c语言对温度的编程,PLC最全编程算法,不收藏就亏大了!

热门文章

  1. 全球及中国速冻菠萝市场消费潜力及供需前景调研报告2021-2027年
  2. 全球及中国不锈钢商用厨刀行业营销战略及未来发展趋势分析报告2022年版
  3. Tomcat内存溢出(java.lang.OutOfMemoryError: PermGen space)的解决办法
  4. 迅为四核4418开发板MiniLinux-CAN总线测试使用文档
  5. Python 为什么要使用描述符?
  6. c++ 读取一行的2个数
  7. 11组软件工程组队项目失物招领系统——进度汇报和下周目标
  8. Android 之UID and PID
  9. 51 单片机 跑马灯2
  10. Java Swing界面编程(28)---复选框:JCheckBox