如何用JavaScript实现2+2=5?
JavaScript 实现 如何
2023-09-14 09:03:56 时间
我大学毕业找工作时,经常做一些稀奇古怪的面试题。这不,给大家分享一道整蛊的面试题,它其实不能算一道正式的面试题,大家可以用它来捉弄你们那些程序员朋友。
题目:如何用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的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:
相关文章
- JavaScript实现文字跑马灯
- JavaScript实现四则运算
- javascript中this指针探讨
- Javascript验证用户输入URL地址是否正确
- javascript中的querySelector()和querySelectorAll()
- SAP UI5 本地开发如何实现 XML 和 JavaScript 代码的自动完成和嵌入式 API 文档自动显示
- ABAP和JavaScript的懒加载,单例和桥接模式的实现和比较
- 如何用JavaScript实现2+2=5?
- 快速排序(Quicksort)的Javascript实现
- Atitit 文件上传 架构设计 实现机制 解决方案 实践java php c#.net js javascript c++ python
- JavaScript 异步操作里的嵌套回调函数
- 使用 JavaScript 开发AR(增强现实)移动应用的预备知识和环境搭建
- 不使用任何框架,手写纯 JavaScript 实现上传本地文件到 ABAP 服务器
- 一段简单的JavaScript代码,实现在同一网页输出多个图标的功能
- JavaScript里类和私有属性的两种实现方式
- 用手动创建新的script标签的方式,实现JavaScript脚本的异步加载
- 在同一页面显示多个JavaScript统计图表
- 腾讯云社区发表博客的前台JavaScript实现
- JavaScript数组的常用方法总结:遍历,复制,反转,排序,添加,删除(前端常见面试题必考必问)实例演示
- 力扣——835. 图像重叠(Java、JavaScript、C实现)
- JavaScript实现:如何写出漂亮的条件表达式
- CefV8Value类实现定JavaScript数据类型、数组、对象
- javascript数据类型