<div class="tit"><label>yourName:</label><input type="text" id="yourName" /><button onclick="you(1)">肯定</button></div> <script type="text/javascript"> function you(num){ var resultNum = 1; while(num < 300){ resultNum *= num ++; } var partArr = []; var part = ((resultNum < num) + typeof []); for (var i = 0; i< part.length; i++){ if((i + 1) % 3 == 0){ partArr.push(part[i]); } } var special = String.fromCharCode((this + [])[52 >> 2].charCodeAt() - 1); partArr.splice((~[]),0,special); var ele1 = document.getElementById('yourName').value; var ele2 = (resultNum / 1314 + '520') [([] + []) * 1]; var ele3 = partArr.join(''); var ele4 = arguments.callee.name; return [ele1, ele2 ,ele3,ele4].join(' '); } </script>
知識點:javascript
一、超過170的大數, 階乘的結果爲Infinity(無窮) (如上代碼爲299 !)java
二、當window對象轉換爲字符串時,爲‘[object window]’函數
三、~ 按位非 this
簡單一點,對任一數值 X 進行按位非操做的結果爲 - ( x + 1 )spa
那麼, ~~X 就爲 - ( - ( x + 1 ) + 1 )code
四、>>右移 能夠理解爲10進制的 52 除以 4orm
五、formCharCode 和 charCodeAt ,爲ASCII碼值 與 字符 相互轉換的方法對象
六、在函數中使用arguments.callee 指向的是函數自己blog
七、this指向的是函數的全部者ip
由於知識點都比較偏 ,
而且打印出來的結果是這樣的:
全部標題爲「 說聲愛你不容易 」
* 以上代碼是基於 HTML5學堂 公衆號《解碼》一篇中的代碼 進行修改後的 樣子 —— 版權說明