溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何用JavaScript實(shí)現(xiàn)2+2=5?

發(fā)布時(shí)間:2020-08-09 12:50:25 來源:ITPUB博客 閱讀:136 作者:i042416 欄目:web開發(fā)

我大學(xué)畢業(yè)找工作時(shí),經(jīng)常做一些稀奇古怪的面試題。這不,給大家分享一道整蠱的面試題,它其實(shí)不能算一道正式的面試題,大家可以用它來捉弄你們那些程序員朋友。

題目:如何用JavaScript實(shí)現(xiàn)2+2=5?

答案如下。

新建一個(gè)txt文件,然后把后綴名改為.html, 再用瀏覽器打開。

<html><script>g = function () {
H = 3return H + H
}
f = function () {
Η = 2return Η + H
}// 3 + 3 = 6alert(g())// 2 + 2 = 5alert(f())</script></html>

如何用JavaScript實(shí)現(xiàn)2+2=5?

會(huì)先后彈出兩個(gè)對(duì)話框,依次顯示6,5。

但是,第二個(gè)函數(shù)f里面,明明變量H被賦成了2, 2 + 2 應(yīng)該等于4才對(duì),為什么答案是5????

我們用Chrome開發(fā)者工具調(diào)試一下,看看到底有什么玄虛。

為什么函數(shù)f里有兩個(gè)看起來一模一樣的H,但是一個(gè)值為2,一個(gè)值為3?

如何用JavaScript實(shí)現(xiàn)2+2=5?

到現(xiàn)在,肉眼已經(jīng)不能幫助我們了。那么我們就請出winHex這款16進(jìn)制文件編輯與磁盤編輯神奇出馬。

先從百度上搜索ASCII,得知大寫字母的H的十六進(jìn)制編碼為48.

如何用JavaScript實(shí)現(xiàn)2+2=5?

然后我們用WinHex打開上述代碼文件,果然發(fā)現(xiàn)了這個(gè)48的16進(jìn)制編碼對(duì)應(yīng)了大寫H。

如何用JavaScript實(shí)現(xiàn)2+2=5?

同樣,加號(hào)“+”的16進(jìn)制編碼是2B:

如何用JavaScript實(shí)現(xiàn)2+2=5?

如何用JavaScript實(shí)現(xiàn)2+2=5?

空格為20。

所以謎底在這里,加號(hào)前面肉眼看起來像大寫字母H的變量“H",其實(shí)并不是H,其16進(jìn)制編碼為CE 97。它的值在函數(shù)f里賦為2,而大寫H賦為3,2 + 3 = 5,所以彈出窗里我們看到的結(jié)果是5。

如何用JavaScript實(shí)現(xiàn)2+2=5?

這道題其實(shí)并沒有考察JavaScript里閉包等知識(shí)點(diǎn),而是一個(gè)障眼法,惡作劇。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI