題記:
寫本文有以下幾個目的:
1 最近活比較少。
2 抱怨現在的各種教學越來越完蛋, 然後別人說, 你寫個試試, 就知道不好寫了。
so我決定寫寫。面向讀者:沒有寫過JavaScript或者沒有被一些亂七八糟的教材所毒害的人。
這樣你就可以只被我一個人毒害了。^_^
本文:
我一向不喜歡《JavaScript權威指南》 這種雖然權威但是廢話連篇並且看起來毫無頭緒的書的。
根據相同的道理我也不喜歡看現代漢語詞典。
我比較喜歡的是《JavaScript語言精粹》這種短小精悍並且有內涵的書籍。
實際上, 這個描述恰好也是對JavaScript這門語言的描述。
JavaScript是運行於瀏覽器上的, 你就暫時這麼認為吧。
一般說來來部落格園的人不會沒有任何編程經驗的。 所以關於if, else, while, for之類的簡單文法我就不提了。 直接進入本文。
JavaScript是一門基於對象的語言。 你說物件導向也行。 反正都那個意思。
只不過JavaScript裡面很變態的一點就是:類也是對象。
嗯, 這麼說不太確切, 應該說沒有類。 然後JavaScript的開發人員用各種變態手段來類比類。
我們先從一個簡單的程式入手吧。 我比較喜歡直接, 不喜歡含蓄。
我們寫如下的代碼:
(function(window, undefined){
document.write('Hello, world!');
})(window);
記住JavaScript是一門很詭異的語言, 非常適合用來裝13。 因此千萬不能寫的太簡單。。
- -!
而運行方式則是:將JS檔案放入Script標籤。或者直接將代碼放入Script標籤。
具體就不示範了。 這段代碼會顯示出一個Hello, world!出來
逐步解釋整個代碼:
function關鍵字可以用於建立一個function(簡直是廢話)
後面用()來加參數。
這個函數可以立刻啟動並執行。
所以整個相當於:
var aFunc = function(window, undefined){
document.write('Hello, world!');
}
aFunc(window);
然後, window和undefined是幹嗎用的?
這個很簡單, 他們沒什麼用。
=.=
一般的js檔案都會這麼寫,理由是:
1 壓縮。
我們知道js檔案會被壓縮成更加短小精悍更加讀不懂的代碼(據說有些人可以直接寫出不用壓縮的代碼, 厲害厲害), 來減小檔案體積。 而window和undefined非常常用, 因此把他們轉化成非全域變數,就可以被壓縮了。 這樣會大大減小檔案體積。
2 一個函數如果聲明了兩個參數但是調用的時候只傳遞一個, 那麼第二個值就會被賦值為undefined。 你看, 我就這樣閃亮登場了。。
也許有人會說, 轉化後的代碼,這麼寫不行嗎:
function aFunc(window, undefined){
document.write('Hello, world!');
}
aFunc(window);
請記住這樣是不好的。 他太容易被“非JavaScript程式員” 讀懂。 我們不能這樣。這樣達不到顯示我們與眾不同的目的, 達不到裝13的目的。
此外還有一個更重要的原因, 我們下一次的時候再說。