javascript
7 种 JavaScript 技巧使你更聪明
1.總是顛倒邏輯
讓我們從一個小優化開始,目的是為了使得非常簡單的操作看起來復雜些。
if (x && y) { … } // bad if (!(!x || !y)) { … } // good2.在你的變量名字里使用擴展的unicode字符
編譯好的軟件一旦發布成產品,它必須是一個黑盒。這對JavaScript來說是不可能的。如果有人想徹底搞懂你的JavaScript代碼,他們僅僅需要打開瀏覽器控制臺、加一些斷點就能看到對象的狀態。
對象屬性的名稱,改用非規則字符串,來阻礙他們的進展。
var foo = function (person) {// stuff happens// perhaps a breakpoint is added here// or they attempt to log the objectconsole.log(person);}var person = {};person[‘\t’] = ‘Nicholas’;person[‘\b’] = ‘Male’;person[‘\r’] = ‘Programmer’;person[‘\f’] = ‘Lover’;當你試圖去查看變量時,會看到如下情景:
當你試著在控制臺輸出log時,會看到:
用同樣的技巧把Zalgo文本合并到你的代碼
3.補習你的三角學
在我從大學退學以前,老師常常說數學和編程是多么地緊密相關。根據經驗,我發現不是這回事兒。事實上,我開始覺得,老師是為了騙學生來上課。好吧,是時候好好利用學生欠下的嚴重債務了。
不要用
if (!val) { … }而要用
Math.floor(.5 + ((Math.cos(val)*.5)))僅當val是2pi的整數倍時,它才會返回true。你甚至不需擔心val不是一個數字。真沒有關系。實際上,也不再有關系了。
4.利用JavaScript的仁慈
有多少次你在一個if語句該用等號操作符的時候而意外地使用了賦值操作符?這是非常惱人的,因為它不會報錯、僅僅把程序帶到不可意料的境地。
function foo (x) {if (x=true) {// no matter what value is // passed in for x, this// will always execute} } foo(false);看你代碼的人看到這里,會想當然地認為這是你代碼的錯誤。但是,我們沒有錯誤,因此這個人就會受到懲罰。“修復”它將帶來不希望的后果。
5.不用十進制
用八進制初始化一個數字很容易被誤認為是十進制;僅僅在第一個數字使用‘0’。
var i = 27 // 27
var j = 027 // 23
你的同事或許責怪你正犯下不可饒恕的錯誤,但是你要堅持八進制更快,因為所有的位本來就是以8為一組的。
6.空白不是毛病;除了它有用的情況
每個人都知道JavaScript里的空白和分號不過是多余的,是嗎?錯!不要這樣想當然。
(function () { var a=1,b=2,c=3d=4,e=5,f=6; }()); console.log(d,e,f); // 4,5,6上面的例子,我們“少”了一個逗號。如果代碼都在一行,我們不會犯錯。但是既然不在一行,編譯器將在 c=3 之后附加一個分號。這導致d,e,f聲明為全局變量。現在可以隨時使用這些變量了,包括分離的文件。
再一次,如果有人注意到這種情況,并試著修改,這將潛在地破壞了所有不相關的代碼部分,而不是規范代碼,他們很可能只有回退修改了,足以證明你更聰明。
7.富有創新
編程就是創新,創新就是模仿別人。不要害怕偷代碼和想法,或者責備其他人偷你的。比如,你知道jQuery是完全模仿Prototype的嗎?是的。
Nicholas Ortenzio【注1】在練習倒背字母表,以防萬一。
原文地址:https://medium.com/cool-code-pal/a1286881aed7
注1:Nicholas Ortenzio 就是本文的作者,最后一句話的意思應該是:很少有人倒背字母表,如果你倒背了,你會顯得比其他人聰明。
轉載自臘八粥
文章轉載自 開源中國社區 [http://www.oschina.net]
總結
以上是生活随笔為你收集整理的7 种 JavaScript 技巧使你更聪明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Jenkins修改管理员密码.
- 下一篇: jQuery07源码 (3803 , 4