小菜的前端編程散談(4)

小菜的前端編程散談(4)

接上篇作一些補充吧,以前講到過編程中的類型和函數,好比聲明一個變量必須指定類型,或者說聲明一個函數必須指定參數類型和返回類型。其實在動態編程語言中,並非這樣的。動態編程語言比較靈活和自由,我能夠列舉如下幾個特徵:javascript

  1. 聲明變量不須要指定類型,好比 var count = 0; var只是一個變量聲明的關鍵字而不是一個類型標識,其實聲明以後,count的類型是經過值進行推斷出來的
  2. 變量能夠從新賦值,好比 上面已經聲明瞭變量count而且賦值爲0,編譯器推斷它爲數值類型。而後我在程序後面能夠從新使用諸如 count = "hello world";這樣的代碼,就是說count的值已經動態變成了一串字符串了,並且類型也變成了字符串類型了。因此js裏面var是什麼含義呢?它徹底不是類型標識,它就是一個代號一個關鍵字,這是一個變量,它能夠表示任何東西。這一點須要和傳統的靜態編程語言區分開來
  3. 函數沒必要指定參數類型,也沒必要指定返回值類型。好比 function getCount(list){ ... },若是按照靜態編程語言,這裏應該是 function int getCount(array list){ ... },但這裏卻不是,動態編程語言(好比js)的函數是不須要在定義的適合指定參數類型和返回類型的。這一點須要注意,有時候這樣類型的靈活會帶來一些很差的地方,爲何呢?能夠思考一下

我在這裏說明這些,實際上是想說明,我拿靜態編程語言舉例子,只是爲了方便理解而已,具體在編程中,仍是要參照具體的編程語言環境和語法進行編碼前端

控制流程

這裏我就不具體闡述程序控制流程的那些說明了,我把它們列出來,本身在代碼裏面敲一遍理解一下。若是你肯定你已經充分了解他們的用法和使用場景,那麼直接跳過就好了java

  1. if 分支
  2. if ... else if 分支
  3. if ... else 分支
  4. switch 分支
  5. while 循環
  6. do ... while 循環
  7. for(i=0;i<10;i++) { ... } 循環
  8. for(var item in list) { ... } 循環
  9. 循環中的continue 循環繼續
  10. 循環中的break 循環中斷
  11. 函數中的return 函數返回

插一下關於邏輯操做符合運算符的知識:算法

  1. && 而且
  2. || 或者
  3. = 賦值運算符
  4. ==或者===,相等運算符
    再講一個小例子,瞭解一下運算符的優先級:
    好比,if(a){ b = a} ,能夠表示爲 a && (b=a) ,爲何呢?試想一下,假設有一個布爾類型是這樣表示的: bool positiveEven = (a>0 && a%2==0),表示正的偶數,a大於0而且a能夠被2整除(餘數爲0),它們的判斷順序是怎麼樣的呢?先判斷a>0這個邏輯,若是a>0的邏輯成立再判斷後面a%2==0的這個邏輯。想一想看,這裏面的優先級判斷,是否是有一個條件判斷的意味在裏面?由於若是a<0的話,後面那一句確定就不用再判斷了,直接就返回false了。嗯,想一想一下||(或)這個邏輯操做符,其實它這個是反過來的邏輯,想一下!

補充幾道題目吧,有空作一下:
1)在網頁上顯示一個時鐘和日期,要求實時更新,顯示時分秒就能夠了。
2)用javascript打印100之內的斐波那契數列
3) 給定一個數組[3,7,5,8,2,1,10,9,4],寫一個函數,對這個數組進行排序
儘可能試着作一下吧,最好是可以作出來。瞭解一下本身哪方面的不足,記下來,寫出來編程

後記

後面我準備講一下函數傳值問題,而後講一下引用類型和值類型,再日後開始講講基本的算法和數據結構了。OK,先就這樣數組

相關文章
相關標籤/搜索