如何用JavaScript实现2+2=5? 1
我大学毕业找工作时,经常做一些稀奇古怪的面试题。这不,给大家分享一道整蛊的面试题,它其实不能算一道正式的面试题,大家可以用它来捉弄你们那些程序员朋友。
题目:如何用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 ...
- 如何用JavaScript手动实现一个栈
什么是栈(Stack) 栈是一种遵从后进先出(LIFO)原则的有序集合. 新添加的或待删除的元素都保存在栈的末尾,称为栈顶,另一端叫栈底. 在栈里,新元素都靠近栈顶,旧元素都接近栈底 现实中的例子 在 ...
- 如何用JavaScript实现2+2=5?
我大学毕业找工作时,经常做一些稀奇古怪的面试题.这不,给大家分享一道整蛊的面试题,它其实不能算一道正式的面试题,大家可以用它来捉弄你们那些程序员朋友. 题目:如何用JavaScript实现2+2=5? ...
- 如何用javascript获取文本框,下拉框,单选框的对应值或者将值赋给它们?雪原虎 发布于:2007-10-22 00:32
如何用javascript获取文本框,下拉框,单选框的对应值或者将值赋给它们? 雪原虎 发布于:2007-10-22 00:32 1.文本框 1.1 <input type="text ...
- 一步一步学Silverlight 2系列(22):在Silverlight中如何用JavaScript调用.NET代码_转载...
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- 一步一步学Silverlight 2系列(22):在Silverlight中如何用JavaScript调用.NET代码
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- 在asp.net中如何用javascript读取本地Xml中的数据到网页中的文本框?
在asp.net中如何用javascript读取本地Xml中的数据到网页中的文本框? 转载于:https://www.cnblogs.com/dynasty/archive/2005/08/18/21 ...
- js 延期执行_如何用javascript设置延时执行
152 **** **** 如何用javascript设置延时执行 一.什么叫做JavaScript 的计时事件 使用JavaScript可以实现代码的延时执行,也就是说当一个函数被调用时不立即执行某 ...
- 如何用javascript api for arcgis调用有参数的GP服务
如何用javascript api for arcgis调用有参数的GP服务 javascript代码:(个别变量没有说明,大家就就看看大概思路就好了,这是我的完整代码) 1 var linesCan ...
最新文章
- 完胜BERT!NLP预训练利器:小模型也有高精度,单个GPU就能训练
- Android 实用工具Hierarchy Viewer实战
- chapter 01
- 多用户使用一台计算机可设置,2012年职称计算机考试WindowsXP选择题5
- js判断fck编辑器内容是否为空并获得焦点
- HTML里的表格不能复制粘贴,表格之间无法复制粘贴怎么办_两个EXCEL表格为什么不能复制和粘贴-win7之家...
- java虚拟机工作原理图_Java虚拟机工作原理
- The prefix p for attribute p:message associated with an element type bean
- Python dictionary 字典 常用法
- awg线径与电流_AWG电流线径对照表
- 影音先锋 android下载地址,影音先锋手机版-影音先锋下载v5.8.2 安卓手机版-西西软件下载...
- Vitis下Linux应用程序开发流程
- 面试 Redis 没底?这 40 道面试题让你不再慌
- Java常用jar包用途
- 思科Cisco交换机的基本模式和命令基本使用和技巧大全
- 科略教育—太极拳理与企业家管理理念
- 不小心删除JDK文件夹,无法重新安装该怎么办*
- PCB板常用检测方法
- DELL 电脑 重装系统出现 no boottable devices found
- 几种典型的立体匹配算法
热门文章
- 文献学习(part26)--Extended Comparisons of Best Subset Selection, Forward Stepwise Selection, and Lasso
- 第三次学JAVA再学不好就吃翔(part1)--初识JAVA
- 3000字详解Pandas数据查询,建议收藏
- 关于2019的一些想法
- 使用JavaScript给对象修改注册监听器
- SAP 电商云 Spartacus UI Quick order 产品搜索结果页面的显示逻辑
- SAP UI5 的本地 Fiori sandbox Launchpad
- 如何使用SAP C4C Repository Explorer里的BO test shell
- SAP 产品一脉相承的 UI 增强思路,在 SAP Commerce Cloud(电商云) UI 增强实现中的体现
- NgRx Store里的StoreModule.forRoot()