python表达爱意_程序员有哪些对女友表达爱意的奇招?
前幾天在研究JS的類型轉換,突然發現了這么一個東西:
[[][0] + []][0][5]+
[[][[[][0] + []][0][4]+[[][0] + []][0][5]+[[][0] + []][0][1]+[[][0] + []][0][2]] + []][0][8]+
[[[] == []][0] + []][0][2]+
[[][[[][0] + []][0][4]+[[][0] + []][0][5]+[[][0] + []][0][1]+[[][0] + []][0][2]] + []][0][6]+
[[][[[][0] + []][0][4]+[[][0] + []][0][5]+[[][0] + []][0][1]+[[][0] + []][0][2]]+[]][0][23]+
[[][0] + []][0][3]+
[[][[[][0] + []][0][4]+[[][0] + []][0][5]+[[][0] + []][0][1]+[[][0] + []][0][2]] + []][0][8]+
[+[1 + [[][0] + []][0][3] +309][0] + []][0][7]+
[[][[[][0] + []][0][4]+[[][0] + []][0][5]+[[][0] + []][0][1]+[[][0] + []][0][2]] + []][0][6]+
[[][0] + []][0][0]
如果說復制上面的代碼,在瀏覽器中執行的話,會輸出.......rua!
看到這個,熟悉JS的同學估計已經想清楚其中的原理了,然而大多數沒有做過前端開發的同學肯定是一臉懵逼,這其中每一行我都看得懂,然而為什么加在一起就會出現這樣的神奇的東西呢!
作為唯一一個到達神之領域的編程語言(不吹不黑),JavaScript最令人興(tou)奮(teng)的特性就是隱式類型轉換,每年在這所謂的三位一體上栽倒了多少懵逼的少年。
然而這種看似玄幻的類型轉換,其實也是有規則在里面的。
比如可以嘗試一下,下面這些會打印什么內容呢?
console.log(+[]);
console.log(1 + []);
console.log(+undefined);
console.log([] == []);
console.log(+[] == +[]);
如果你對這個已經心中有數,自然可以明白上面的各式問題,如果不可以準確說出上面的結果的話,也可以先看這兩篇文章。
公布答案!
[[][0] + []][0][5]
按照語法樹來分析,首先看第一個方括號內從左往右分析,[][0]取空數組的第一個元素,所以返回值會是undefined,undefined+[], 會是"undefined"字符串,放在方括號中而后再取第一個元素,得到的就是這個元素本身,然后再取這個字符串的第六個字母,就是 i 了!
在我們所需要的I love you中,undefined中包含了 i,e,u, 這幾個字母都可以通過以上的方法得到,而剩下的 L,y,o,v 這四個字母就要再去想一下了。
首先我們看一下l,在上面我們給出的幾個例子中,第四個例子
[] == []
的結果并不出人意料的是false,然后應用
[] == [] + []
的技巧就可以或得到其字符串形式的返回,也就是"false"
這里面包含了我們所需要的 L .
包含y的JavaScript關鍵字有點難找,不過在隨便翻了翻文檔后就找到了用來表示數字超過最大值的關鍵字,Infinity。
由于JavaScript中最大的數字是
而大于這個數字的所有值都會被處理成Infinity,而我們又從JavaScript中的隱式類型轉換中了解到,js會將含有e的數字看作是科學計數法的一部分,因此我們使用
+("1e309")
即可表示無限,通過同樣的手段可以取到y這個字母。
到此為止,只有o,v還沒有取到了。
JS中還有一個重要的特性。那就是對于對象的屬性的訪問既可以通過.操作符的形式,也可以通過鍵值對的方式就行訪問,而通過以上獲取到的字母,我們可以拼出"find"這個字符串.
[]["find"]
會顯示數組的find函數,結果為
function find() { [native code] }
通過這樣的方法,我們就可以取到o,v兩個字母, 不過要提前拼出"find"字符串,讓我們的語句很明顯變長了。。。
然而將這些字母組合起來之后,就可以得到最上面的輸出“I love you”.
看著這些貌似混亂無比的字符串在經過無數的規則處理之后, 終于得到了我們想要的效果。掌控這個世界的混亂,用規則和對于規則的理解去創作,這也正是程序員的浪漫的最好體現了。
所以說,奇招不奇招的,主要是要不要去想……
總結
以上是生活随笔為你收集整理的python表达爱意_程序员有哪些对女友表达爱意的奇招?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2022年国庆节水篇
- 下一篇: SQL注入产生原理