js 轉化為實體符 JS奇葩語法(二)

2021-10-13 21:22:54 字數 1823 閱讀 4977

在你的瀏覽器控制台輸入這一段**

(+)[+!!]+(+{})[!++!!]
猜猜看會得到什麼結果?

要想理解這個結果怎麼出來的,需要你對js各種型別的轉換非常熟悉才行。

我們試著解析一下這個語法。

上文中的**分為兩部分 *** + ***

所以它們分別代表「n」和「b」

我們先看第乙個字母

轉化

(  [ .tostring() ] + .tostring() ) [ +!! ]
解析結果

(  [ "" ] + "" ) [ +!! ]
第2次轉化

( undefined+"" )[ +!! ]
結果

"undefined"[ +!! ]
第3次轉化

"undefined"[ +!!true ]
結果

"undefined"[+true]
再轉化

"undefined"[1]
最終結果

"n"
然後我們再來看第二個字母轉化

( .tostring() + {}.tostring() )[ !+ + !! ]
結果

(""+"[object object]")[!++!!]
結果

"[object object]"[!++!!]
轉化

"[object object]"[!+.tostring() + !!.tostring() ]
結果

"[object object]"[!+"" + !!true ]
結果

"[object object]"[!+"" + true ]
結果

"[object object]"[!0 + true]
結果

"[object object]"[true + true]
結果

"[object object]"[1 + 1]
結果

"b"
千鋒html5學院:一道奇怪的js面試題(一)​zhuanlan.zhihu.com

千鋒html5學院:如何用js檢測瀏覽器型別​zhuanlan.zhihu.com

千鋒html5學院:js棧結構的簡單封裝​zhuanlan.zhihu.com

js 轉化為實體符 JS轉換HTML轉義符

去掉html標籤 function removehtmltab tab c 轉意符換成普通字元 function escape2html str return str.replace lt gt nbsp amp quot ig,function all,t 轉成空格 function nbsp2s...

自動將jsx轉化為js

想將react應用到手頭上的專案練手,計畫希望可以把選單元件化,塞到主頁裡,從而變相的實現類似iframe的功能。然而在呼叫外部組建的時候出現了一系列問題,chrome甚至直接報錯了,一直無法解決,因此只有放棄使用 browser.min.js和jsxtransformer.js,準備自己採用rea...

JS中將物件轉化為陣列

這個對於大佬來說應該是個很基礎的問題,但是今天我要用到這個的時候卻一下沒想起來該怎麼做,所以打算寫下來加深下影響。舉個例子,如何把乙個物件轉化為 我們都知道,js中物件有兩種取值方式,通過在.後面直接加屬性名取值,這也是我們最常使用的一種方式,例如 let obj console.log obj.n...