日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

javascript:可以运行的噪音

發(fā)布時(shí)間:2024/4/15 javascript 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javascript:可以运行的噪音 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為我的博客做了一個(gè)很有 geek 風(fēng)格的關(guān)于頁(yè)面

運(yùn)行下面 javascript 代碼,可以看到我的信息。

?

(+[[]+(1<<1<<1<<1)+(1^1<<1)+(1<<1>>1)+(-~1<<1<<1)+(1.1>>1.1)+(11>>>1)])[[(!!/-/+{})[111^111]+[[]+{}][!1&.1][1|1>>1|1]]+([111/[]+[]][+(1>1)][([]+{})[11-1>>1]+[[],[]+{}+[]][[]+1][1]+(/^/[1]+[])[1|1>>1|1]+[{},1e1,!{}+[]][1+1][1<<1^1]+(11/!{}+{})[~1+1e1+~1]+[!!{}+{}][[]&111][1&1]+(/^/[111]+[])[11^11]+[{},[{}]+{},1][1+[]][11-~1+11>>1]+(!!1+{})[1&1>>1]+([]+{1:1}+[])[1|1]+[[]+!!1][111>>>111][1<<1>>1]]+[])[([]+![111])[1|1<<1|1]+[/=/,[]+[][11]][1|[]][1>>1]+([{}]+{})[1+!![1]]+[1,!1+/~/][1%11][1^1<<1]+(111/[]+{})[~1+1e1+~1]+[!!/-/+/-/][111%111][+!!1]]((~1+1e1+1)+((!1&.1)==([]+/-/[(!![111]+{})[1^1]+(!![1]+[])[1<<1^1]+(!{}+{})[1^1<<1]+(!![1]+/-/)[+(1>1)]])[+(1>1)]),1-~1<<1)](~1-~1e1<<1<<1)+":"+(([]===[])+/-/)[5]+(([]===[])+/-/)[5]+(+[[]+(1e1>>1)+(~1+1e1+~1)+(!1&.1)+(111%11)+(1+1<<1)+(1<<1^11>>1)+(1<<1<<1)+(~1+1e1+1)+(+(1>1))+(+[])+(~1-1+11)+(-~1<<1<<1)+(1-~1<<1)+(~1+1e1)])[[(!!/-/+[])[11&[]]+[[]+{11:11}+[]][111>>111][1+[]]]+([11/!1+/1/][1&1>>1][([{}]+{})[1e1>>1|1]+[[],[]+{111:111}+[]][1|1][111%11]+([]+[][11])[1<<1>>1]+[{},1e1,!/~/+{}][1<<1^1>>1][1<<1^1]+([]+11/!{})[~1+1e1+~1]+[!![111]+[]][1%1][1&1]+([]+[][111])[.1^!1]+[{},[]+{},1][111%11][11-~1+11>>1]+([]+!!1)[111>>>111]+([]+{}+[])[[]+1]+[!!1+[]][1^1][111%11]]+[])[(!1+{})[1^1<<1]+[/=/,[]+/^/[11]][1|[]][11.11>>11.11]+([]+{}+[])[~~(1.1+1.1)]+[1,!{}+/~/][1][1|1<<1]+(1/!{}+[])[~1+1e1+~1]+[!![1]+{}][111.111>>111.111][1+[]]]((11^1<<1)+((1>>1)==([]+/-/[(!!/-/+/-/)[+(111>111)]+(!![11]+[])[1-~1]+(![11]+{})[1|1<<1|1]+(!!{}+[])[11%11]])[111.111>>111.111]),11+1>>1)](~1-~1e1<<1<<1)+"."+(+[[]+([]+1)+(1-~1<<1)+(1+1<<1)+(1|1<<1)+(1<<1<<1<<1)])[[(!!1+{})[!1&.1]+[[]+{}+[]][1&[]][1+[]]]+([11/[]+{}][+(111>111)][([{}]+[{}])[1e1>>1]+[[],[]+{}][[]+1][+!!1]+(/^/[111]+/&/)[1&1]+[{},1e1,!1+[]][1<<1][1^1<<1]+(111/!{}+/1/)[~1+1e1+~1]+[!!/-/+[]][11>>11][1|1]+([][1]+/&/)[1.1>>1.1]+[{},[{}]+{},1][~~1][1+1e1+1]+([]+!!1)[1^1]+([]+{})[1&1]+[!!1+{}][!1&.1][1|[]]]+[])[([]+!1)[1|1<<1|1]+[/=/,[]+/^/[11]][111%11][11.11>>11.11]+([{}]+[{}])[~~(1.1+1.1)]+[1,[]+!/~/][1|1>>1|1][1^1<<1]+([]+11/[])[11+1>>1]+[!!/-/+{}][+(1<1)][~~1]]((1e1-1)+((+[])==([]+/-/[(!!1+[])[!1&.1]+(!!/-/+/-/)[1|1<<1|1]+(!1+{})[1<<1^1]+(!![1]+/-/)[11>>11]])[111^111]),-~11>>1)](~1-~1e1<<1<<1)

如何實(shí)現(xiàn)的呢?

@OKter 說(shuō)是 ASCII 碼拼接。到底是不是呢?

第一步

先來(lái)個(gè)簡(jiǎn)單的,就以?justjavac?為例吧。首先我們要輸出?j。

下面這段代碼可以輸出?j:

(1+{})[4]

解釋:代碼?1+{}?的結(jié)果是?"1[object Object]", 顯然,我們得到了一個(gè)包含 j 的字符串。但為什么會(huì)如此奇怪呢?畢竟我們都期望?1+{}?的結(jié)果應(yīng)該是 1。

對(duì)象加法

有下面這樣的一個(gè)加法操作。

value1 + value2

在計(jì)算這個(gè)表達(dá)式時(shí),內(nèi)部的操作步驟是這樣的 (§11.6.1):

  • 將兩個(gè)操作數(shù)轉(zhuǎn)換為原始值 (以下是數(shù)學(xué)表示法的偽代碼,不是可以運(yùn)行的 JavaScript 代碼):

    prim1 := ToPrimitive(value1)prim2 := ToPrimitive(value2)

    PreferredType?被省略,因此?Date?類(lèi)型的值采用?String,其他類(lèi)型的值采用?Number。

  • 如果 prim1 或者 prim2 中的任意一個(gè)為字符串,則將另外一個(gè)也轉(zhuǎn)換成字符串,然后返回兩個(gè)字符串連接操作后的結(jié)果。

  • 否則,將 prim1 和 prim2 都轉(zhuǎn)換為數(shù)字類(lèi)型,返回他們的和。

  • 更多詳細(xì)內(nèi)容參考

    • JavaScript中,{}+{}等于多少?

    ?

    由于字符串可以當(dāng)作數(shù)組一樣取里面的元素,于是?(1+{})[4]?就得到了 j。

    第二步

    既然我們得到了 j,那下一步就是 u 了。我們還是按照這個(gè)思路,哪個(gè)字符串里面還有 u 呢? 在 javascript 中確實(shí)有這么一個(gè)特殊的值,含有 u: "undefined",思來(lái)想去,可以使用這段代碼:

    /1/[1]+[]

    分開(kāi)解釋:

  • /1/?是一個(gè)正在表達(dá)式

  • 當(dāng)他后面跟上 [] 時(shí),被強(qiáng)制轉(zhuǎn)換成了數(shù)組,然后去取里面的元素(第二個(gè)元素),得到的結(jié)果是 undefined(注意:是 undefined 值,不是字符串)

  • 把 undefined 轉(zhuǎn)換成字符串,在這里我們把它和數(shù)組相加。

  • 呵呵,上面使用正在表達(dá)式?/1/?有點(diǎn)兒賣(mài)弄的嫌疑,其實(shí)用?1[1]?就夠了。 為了更有 geek 感,可以多出現(xiàn) 0 和 1。通過(guò)?/1+/[+0]+[+1]?我們可以得到字符串 "undefined1"。

    使用數(shù)組操作符把我們想要的 u 提取出來(lái),?(/1+/[+0]+[+1])[0]。

    現(xiàn)在我們已經(jīng)得到了字符串 "ju" 了。按照這種方法,我們可以得到其他的字符串。沒(méi)有做不到的,只有想不到的。

    問(wèn)題來(lái)了

    用這種方法能拼出所有的字符嗎??@長(zhǎng)夜 則提出了更深的問(wèn)題: “可以拼中文嗎?”

    @TODO 待續(xù)……

    大功告成

    當(dāng)我們得到了所有的字符串,就可以使用 + 號(hào)把他們連接起來(lái)。 你以為這就完了嗎?當(dāng)然遠(yuǎn)遠(yuǎn)沒(méi)有,我們應(yīng)該讓我們的代碼更 Cool,更有 geek 范。

    相關(guān)閱讀:

    • JavaScript 的怪癖 1:隱式類(lèi)型轉(zhuǎn)換
    • 為什么 ++[[]][+[]]+[+[]] = 10?

    轉(zhuǎn)載于:https://www.cnblogs.com/lanzhi/archive/2013/06/01/6468090.html

    總結(jié)

    以上是生活随笔為你收集整理的javascript:可以运行的噪音的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。