摘要:前幾天李老哥秀了一個(gè)中騷操作給我看,即的值是各位也可以看一下臥槽,牛逼啊很好奇,如何得到這個(gè)結(jié)果,莫名其妙就得到了我第一感覺(jué)是不可能啊,可是結(jié)果就在那這就要思考了,這個(gè)是什么碼的騷操作計(jì)算得來(lái)的數(shù)字結(jié)果還是字符轉(zhuǎn)化,或是別的什么,它是通過(guò)什
前幾天李老哥秀了一個(gè)JavaScript中騷操作給我看,即++[[]][+[]]+[+[]]的值是10;
各位也可以看一下
console.log(++[[]][+[]]+[+[]]) 10
臥槽,牛逼??!
很好奇,js如何得到這個(gè)結(jié)果,莫名其妙就得到了10;我第一感覺(jué)是不可能啊,可是結(jié)果就在那;這就要思考了,這個(gè)10是什么?ASCII碼的騷操作計(jì)算得來(lái)的數(shù)字結(jié)果還是字符轉(zhuǎn)化,或是別的什么,它是通過(guò)什么方式得來(lái)的,先輸出一下它的類(lèi)型:
console.log((typeof ++[[]][+[]]+[+[]])) string
看看發(fā)現(xiàn)了什么?!可以走捷徑了,10是一個(gè)字符串,即是說(shuō)得到是"10",由此想到了什么?沒(méi)錯(cuò),就是字符串拼接,再來(lái)看看++[[]][+[]]+[+[]]的結(jié)構(gòu)和"10"本身,很明顯10是由++[[]][+[]]和[+[]]拼接的,可以大膽猜測(cè),++[[]][+[]]結(jié)果是1,[+[]]結(jié)果是0,于是:
console.log(++[[]][+[]]) 1 console.log([+[]]) [0]
猜測(cè)與結(jié)果雖有出入,卻也沒(méi)偏離太遠(yuǎn),問(wèn)題大概解決一半了:
在JavaScript中,+[]是等于零的,就是說(shuō)console.log(+[] === 0)得到的是true;
就是說(shuō)呢,現(xiàn)在問(wèn)題變成了++[[]][0]+[0]
實(shí)際上,[[]][0]意思是在數(shù)組[[]]中找到第0個(gè)元素,我們找到的會(huì)是[],這有什么意義呢,先跳過(guò),++[[]][0]的結(jié)果為1,這里我們可以忽略[[]][0]把它當(dāng)成任一個(gè)值,因?yàn)橹攸c(diǎn)是++遞增運(yùn)算符,我們知道++任意值意為依次加一,即是+(任意值+1),++[[]][0]可以轉(zhuǎn)為+[]+1(這里需要留意一個(gè)小細(xì)節(jié),就是++遞增運(yùn)算符會(huì)把值返回為Number類(lèi)型);
所以問(wèn)題就變成了1+[0],
在js中[0] == "0",
問(wèn)題就變成了1+"0" === "10";
那么來(lái)猜一猜console.log(1+"0" === "10")會(huì)輸出什么?
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/97911.html
摘要:結(jié)論一維數(shù)組在內(nèi)存中是連續(xù)存放的二維數(shù)組關(guān)于二維數(shù)組的創(chuàng)建二維數(shù)組中的表示行數(shù),表示列數(shù)注意二維數(shù)組的不完全初始化剩下的元素也都默認(rèn)為。示例如下關(guān)于二維數(shù)組的打印我們通過(guò)二維數(shù)組的下標(biāo)來(lái)進(jìn)行打印,而二維數(shù)組的行和列下標(biāo)都是從開(kāi)始的。 ?目錄 一維數(shù)組 關(guān)于一維數(shù)組的創(chuàng)建 關(guān)于數(shù)組的打印 關(guān)...
摘要:表單用于向服務(wù)器傳輸數(shù)據(jù)。屬性對(duì)象的屬性指定了一個(gè)事件句柄函數(shù)。標(biāo)簽的屬性應(yīng)當(dāng)與相關(guān)元素的屬性相同。詳情查閱請(qǐng)狠狠地點(diǎn)擊關(guān)于對(duì)象代表表單中的一個(gè)提交按鈕在表單提交之前,觸發(fā)事件句柄,并且一個(gè)句柄可以通過(guò)返回來(lái)取消表單提交。 系列文章 關(guān)于前端上傳文件全面基礎(chǔ)掃盲貼(零)關(guān)于前端上傳文件全面基礎(chǔ)掃盲貼(一) ----- XMLHttpRequest關(guān)于前端上傳文件全面基礎(chǔ)掃盲貼(二) -...
摘要:安全生成安全的隨機(jī)數(shù),加密數(shù)據(jù),掃描漏洞的庫(kù)一個(gè)兼容標(biāo)準(zhǔn)的過(guò)濾器一個(gè)生成隨機(jī)數(shù)和字符串的庫(kù)使用生成隨機(jī)數(shù)的庫(kù)一個(gè)安全庫(kù)一個(gè)純安全通信庫(kù)一個(gè)簡(jiǎn)單的鍵值加密存儲(chǔ)庫(kù)一個(gè)結(jié)構(gòu)化的安全層一個(gè)試驗(yàn)的面向?qū)ο蟮陌b庫(kù)一個(gè)掃描文件安全的庫(kù) Security 安全 生成安全的隨機(jī)數(shù),加密數(shù)據(jù),掃描漏洞的庫(kù) HTML Purifier-一個(gè)兼容標(biāo)準(zhǔn)的HTML過(guò)濾器 RandomLib-一個(gè)生成隨機(jī)數(shù)和字...
摘要:安全生成安全的隨機(jī)數(shù),加密數(shù)據(jù),掃描漏洞的庫(kù)一個(gè)兼容標(biāo)準(zhǔn)的過(guò)濾器一個(gè)生成隨機(jī)數(shù)和字符串的庫(kù)使用生成隨機(jī)數(shù)的庫(kù)一個(gè)安全庫(kù)一個(gè)純安全通信庫(kù)一個(gè)簡(jiǎn)單的鍵值加密存儲(chǔ)庫(kù)一個(gè)結(jié)構(gòu)化的安全層一個(gè)試驗(yàn)的面向?qū)ο蟮陌b庫(kù)一個(gè)掃描文件安全的庫(kù) Security 安全 生成安全的隨機(jī)數(shù),加密數(shù)據(jù),掃描漏洞的庫(kù) HTML Purifier-一個(gè)兼容標(biāo)準(zhǔn)的HTML過(guò)濾器 RandomLib-一個(gè)生成隨機(jī)數(shù)和字...
閱讀 3527·2023-04-25 17:35
閱讀 2605·2021-11-24 09:39
閱讀 2540·2021-10-18 13:32
閱讀 3428·2021-10-11 10:58
閱讀 1644·2021-09-26 09:55
閱讀 6183·2021-09-22 15:47
閱讀 976·2021-08-26 14:15
閱讀 3478·2019-08-30 15:55