無處不在的Javascript
Javascript現在已經無處不在了,也許你正開啟的某個網站他可能是node.js+json+javascript+mustache.js完成的,雖然你還沒理解上面那些是什麼,也正是因為你不理解才需要去學習更多的東西。但是Javascript已經無處不在了,可能會在你手機上的某個app裡,在你瀏覽的網頁裡,在你IDE中的某個進程中啟動並執行。
從數學出發
讓我們回到第一章講述的小明的問題,從實際問題下手編程,更容易學會編程。小學時代的數學題最喜歡這樣子了——某商店裡的糖一個5塊錢,小明買了3個糖,小明一共花了多少錢的問題。在編程方面,也許我們還算是小學生。最直接的方法就是直接計算3x5=?
document.write(3*5);
document.write實際也我們可以理解為輸出,也就是往頁面裡寫入3*5的結果,在有雙引號的情況下會輸出字串。我們便會在瀏覽器上看到15,這便是一個好的開始,也是一個不好的開始。(轉載保留:be a geek 3:無處不在的javascript 2)
設計和編程
對於我們的實際問題如果總是止於所要的結果,很多年之後,我們成為了code monkey。對這個問題進行設計一次,所謂的設計有些時候會把簡單的問題複雜化,有些時候會使以後的擴充更加簡單。這一天因為這家商店的糖價格太高了,於是店長將價格降為了4塊錢。
document.write(3*4);
於是我們又得到了我們的結果,但是下次我們看到這些代碼的時候沒有分清楚哪個是糖的數量,哪個是價格,於是我們重新設計了程式
tang=4;num=3;document.write(tang*num);
這才能叫得上是程式設計,或許你注意到了";"這個符號的存在,我想說的是這是另外一個標準,我們不得不去遵守,也不得不去fuck。
函數
記得剛開始學三角函數的時候,我們會寫
sin 30=0.5
而我們的函數也是類似於此,換句話說,因為很多搞電腦的先驅都學好了數學,都把數學世界的規律帶到了電腦世界,所以我們的函數也是類似於此,讓我們做一個簡單的開始。
function hello(){ return document.write("hello,world");}hello();
當我第一次看到函數的時候,有些小激動終於出現了。我們寫了一個叫hello的函數,它返回了往頁面中寫入hello,world的方法,然後我們調用了hello這個函數,於是頁面上有了hello,world。
function sin(degree){ return document.write(Math.sin(degree));}sin(30);
在這裡degree稱之為變數,也就是可以改變的量。 於是輸出了-0.9880316240928602,而不是0.5,因為這裡用的是弧度制,而不是角度制。
sin(30)
的輸出結果有點類似於sin 30。寫括弧的目的在於,括弧是為了方便解析,這個在不同的語言中可能是不一樣的,比如在ruby中我們可以直接用類似於數學中的表達:
2.0.0-p353 :004 > Math.sin 30=> -0.98803162409286182.0.0-p353 :005 >
我們可以在函數中傳入多個變數,於是我們再回到小明的問題,就會這樣去寫代碼。
function calc(tang,num){ result=tang*num; document.write(result);}calc(3,4);
但是從某種程度上來說,我們的calc做了計算的事又做了輸出的事,總的來說設計上有些不好