運算符的優先級
- 要心如明鏡:運算符有優先級(先後順序)問題。
- 括号最優先,等号(指派)最落後。
- 先乘除後加減
- 想不清楚或用不明白的,使用括号來解決
- 括号隻有小括号,可以一層層嵌套。
資料的傳值方式
在js中,基本資料類型使用 “拷貝傳值”——傳值的時候直接就出現了一份新的資料(當然同時也是另一個變量所代表)
複合資料類型(數組和對象)使用“引用傳值”——傳值的時候隻是做了一個位址指向,資料仍然隻有一份,兩個變量就指向這同一份資料。
- 注意: 基本(簡單)資料類型的變量名和資料是直接存在“快速記憶體”(棧記憶體)中,而複合資料類型(對象和數組)的存儲分兩個部分:實際資料存在“慢速記憶體”(堆記憶體)中,棧記憶體中隻存變量名和資料在堆記憶體中的位置(位址)。
if分支結構
控制結構:就是使用一定的文法來控制我們程式執行的流程——也可以叫“流程控制結構”
分支就是“多條路徑,走一條”。
-
最簡形式:
//如果此條件滿足(即條件判斷的結果是true),則會執行其中的語句塊,否則什麼也不做。
if( 條件判斷語句 )
{
//要執行的語句塊——語句塊其實就是一種表示“n條語句”泛泛說法。
}
-
二選一分支形式:含義是兩條路,必走一條。
//要執行的語句塊1——前面條件成立時執行
else
//要執行的語句塊2——前面條件不成立時執行
-
多選一分支結構:多條路根據條件的滿足情況走其中一條,但也可能一條都不走:
if( 條件判斷1 ) //如果此條件滿足,則執行語句塊1,然後if就結束了
//語句塊1
else if ( 條件判斷2 ) //如果條件1不滿足,則判斷條件2:如果滿足,則執行語句塊2,并結束if
//語句塊2
else if ( 條件判斷3 ) //如果條件2不滿足,則判斷條件3:如果滿足,則執行語句塊3,并結束if
//語句塊3
…………………… //依此類推。。。。。。如果沒有一個條件滿足,則其實到最後什麼也不會執行,if結束。
-
綜合型式:
……………. //依此類推。。。。。。
//最後的else語句塊。 //此語句塊會在前面條件都不滿足的時候去執行。
注意:綜合型式中是必有一條分支(語句塊)會得到執行。
switch分支結構:
switch的分支結構整體含義跟if類似,也是表示“多條路走一條”,其使用形式:
switch ( 一個變量或表達式 ) //不管是變量還是表達式,最終都代表一個“值”,我們用v1來說話
case 固定值1: //如果v1等于本值1,則會執行語句塊1
//語句塊1;
break; //退出此switch結構
case 固定值2: 如果v1不等于前面值1,則繼續判斷是否等于這裡的值2,如果相等,執行語句2
//語句塊2;
case ………………………………
。。。。。。。。。。。。。。。。。
default: //如果前面各個判斷都不成立(也就是不相等),則會執行此語句塊。
//注意:switch中此default語句塊可以沒有。
//預設語句塊
- 特别注意:if語句其實是可以使用非常靈活的條件判斷,比如 > >= < <= == != === ,但,switch這裡case的判斷,隻能有一種判斷:相等判斷。
while循環結構:
循環的基本觀念:
- 循環就是讓某些程式(語句塊)反複執行
-
循環必須能夠有辦法停止——計算機沒有自己的判斷能力去決定“累了,不做了”
while循環的基本文法形式:
while ( 條件判斷 ) //如果條件判斷滿足了,則會執行其中的語句塊,否則while結束。
//要執行的語句塊
} //如果此語句塊執行完了,會立即回到前面while的位置繼續判斷。
上述形式隻是文法上的基本要求,但,在“實用”中,通常會需要遵照如下模式:
【循環變量初始化】
while ( 【循環變量作為條件判斷】 )
//循環體,就是要反複執行的語句塊
【循環變量值的改變】
do while循環結構:
do while循環是一種會先執行一次,然後再根據判斷條件來決定是否繼續執行并循環的一種循環結構。
do while的實用形式如下:
do
} while ( 【循環變量作為條件判斷】 ) ;
- 描述: 先執行do後面打括号中的語句塊,然後再進行while語句中的條件判斷,如果判斷成立(true),則繼續回到上面do後面的大括号中執行語句塊,否則就結束。
for循環結構——推薦使用:
for循環基本形式:
for( 【循環變量初始化A】; 【循環變量作為條件判斷B】; 【循環變量值的改變C】 )
//循環體D,也就是要反複執行的語句塊
for循環的執行邏輯(順序):
A ==> B==>true ==> D ==> C ==>B==>true ==> D ==> C ==> B==>
┗==>false==>for循環結束 ┗==>false==>for循環結束
var a = new Date(); //new Date() 就是指“系統時間”,該時間其實就是一個“複合資料”,其中包括了時間(日期)中的各項值,比如年份數,月份數,時分秒,星期等等。其中每個資料都是一個“數字”而已。
var week = a.getDay(); //擷取今天系統時間對應的星期,這裡擷取的星期隻是一個0到6的數而已。0代表禮拜天,1代表禮拜一。