我大学毕业找工作时,经常做一些稀奇古怪的面试题。这不,给大家分享一道整蛊的面试题,它其实不能算一道正式的面试题,大家可以用它来捉弄你们那些程序员朋友。
题目:如何用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+Html5+后端PHP分块上传文件,PHP分块上传大文件,该项目可以正常运行,入口为index.html,...2.实现快速上传,即之前上传过,该文件已经存在的,很快就能上传成功,其原理就是文件md5+文件sha1的判断
4. AJAX (Asynchronous JavaScript and XML):AJAX 是一种使用 JavaScript 实现异步数据交换的技术,它允许网页在不刷新整个页面的情况下与服务器进行通信。通过 AJAX,可以创建更加流畅的用户体验,比如动态加载...
在本主题中,我们将深入探讨如何使用JavaScript实现一个页面动态验证码。验证码的主要目的是防止自动化的机器人程序对网站进行恶意操作,例如批量注册、垃圾评论等。 验证码通常包括一些随机生成的字符或数字,用户...
我们将使用JavaScript的`setInterval`函数来每隔一定时间(如1秒)更新时间显示: ```javascript document.addEventListener('DOMContentLoaded', function() { var clock = document.getElementById('clock'); ...
a+b+c+a+b=?` - 这是一个字符串拼接问题。`+`运算符在字符串与数字之间会进行隐式转换,将数字转换为字符串。所以`a+b+c+a+b`等于`"12=12"`。 答案:b) "12=12" 3. `var arr1=new Array(5);var arr2=new Array(1,...
struts2+hibernate5+MySQL 本项目只是简单模拟教务管理系统的基本功能,通过...另外,为了实现相对美观的系统页面,本项目开发过程中还使用了CSS和JavaScript技术。如果不熟悉CSS和 JavaScript技术,也可以不使用这些技术。
JavaScript的Date对象是基于Java 1.0参考实现的,但是随着Java的版本迭代,一些“有问题”的方法逐渐被抛弃,但是JS却还保留着这些问题。例如: * const d = new Date('2016-09-10'); d.getDate(); // 10 d.getYear...
2. navbar:这是一个导航栏的实现,通常使用HTML结构配合CSS样式和JavaScript功能来创建响应式的导航菜单。Bootstrap框架提供了预定义的导航组件,使其易于实现水平或垂直导航,支持下拉菜单、固定定位等特性。 3. ...
本文将详细介绍如何使用JavaScript实现这一功能。 #### 二、功能概述 划词标记与划词搜索功能主要分为两个部分: 1. **划词标记**:当用户在网页中选中一段文本后,该文本会被高亮显示,并自动添加标记。 2. **划词...
i += width * 4) { if (getSumRGB(data, i) == haveRGB) { haveNum++; } } return haveNum; } ``` ##### 4. 背景清除 背景清除是文本分割中的关键步骤之一,通过这一过程可以更清晰地突出文本内容。`...
本文将详细介绍如何通过JavaScript实现这一功能,并解析提供的代码片段。 #### 1. 功能概述 本功能的目标是实现一个简单的全选/取消全选功能。当用户点击一个特定的复选框时(此例中的 `checkbox2`),页面上的...
用html5+css3+javascript实现加减乘除功能。实现一个简单的计算器。 <form action=""> <input type="number" id="n1"> <select name="" id="op"> <option value="+">+ <option value="-">- <option value="*">*...
在本项目中,我们将探讨如何使用HTML5、CSS3和JavaScript技术来创建一个简单的四则运算计算器。这个计算器能够执行基本的加法、减法、乘法和除法操作,对于初学者来说是一个很好的实践项目,它能帮助理解前端开发的...
使用JavaScript实现简单扑克牌游戏 本文将介绍如何使用JavaScript实现简单的扑克牌游戏,包括随机发牌和斗地主游戏的实现。 一、使用JavaScript实现扑克牌游戏的基本思想 使用JavaScript实现扑克牌游戏的基本思想...
本教程《网页设计与制作教程(HTML+CSS+JavaScript)第2版》由刘瑞新和张兵义主编,是一份全面的学习资源,旨在帮助初学者和进阶者掌握网页设计的核心技术。这个压缩包包含了完整的教材、电子教案、素材文件以及源...
本主题将探讨如何使用jQuery和纯JavaScript实现客户端验证,包括图片轮换、Tab切换、图片上下滚动以及表单验证。 首先,jQuery是一个轻量级的JavaScript库,它使得JavaScript的使用更加简洁和高效。在图片轮换功能...
"Python range() 函数的一个JavaScript实现"这个主题,正是探讨如何在 JavaScript 中实现类似 Python 的 `range()` 功能。 Python 的 `range()` 函数是一个非常有用的工具,它用于生成一个整数序列,通常用于循环...
以上就是根据给定的题目要求,使用JavaScript实现的一系列示例代码。这些代码涵盖了循环的基本应用,包括求和、判断质数、斐波那契数列计算以及简单的数学问题解决。希望这些示例能够帮助你更好地理解和掌握...
以下是使用JavaScript实现简单线性回归分析的示例代码:使用该函数,可以传入两个数组作为参数,返回它们的回归系数b1和截距b0。例如: javascript Copy code const xArr = [1, 2, 3, 4, 5]; const yArr = [5, 4, 3...
JavaScript是实现网页交互性的关键,教学大纲会涵盖变量、数据类型、控制流、函数等基础语法,以及DOM操作、事件处理、Ajax异步通信等高级话题。学生将学习如何编写能够响应用户行为的脚本,创建动态效果和交互式...