JavaScript
前端三層
- HTML 結(jié)構(gòu)層 從語義的角度描述頁面結(jié)構(gòu)
- CSS 樣式層 從美觀的角度描述頁面樣式
- JavaScript 行為層 從交互的角度描述頁面行為
JavaScript 描述
- javascript是一種運(yùn)行在客戶端的腳本語言,最早在HTML的網(wǎng)頁上使用唉工,用來給HTML網(wǎng)頁增加動態(tài)功能。
- 瀏覽器就是一種運(yùn)行JavaScript腳本的客戶端,JavaScript的解釋器被稱為JavaScript引擎芍躏,為瀏覽器的一部分屁擅。
JavaScript 組成
- JavaScript是由ECMAScript妇智,DOM和BOM三部分組成。
JavaScript 書寫位置
-
寫在行內(nèi)
<input type="button" value="按鈕" onclick="alert("你好") />
-
寫在html的 <script>的標(biāo)簽中
<script type="text/javascript"> alert("你好"); </script>
-
寫在外部文件中
<script scr="index.js"></script>
注意:引用外部文件的 <script> 中不可以書寫javascript代碼为狸,自定義的javascript的代碼,需要再重新寫入一個(gè)新的<script>標(biāo)簽中遗契。
JavaScript 的注釋
- javascript的注釋分為兩種:塊級注釋和單行注釋钥平。
- 塊級注釋又稱作多行注釋,作用范圍是選中的多行姊途,語法為“/**/”涉瘾。
- 單行注釋是//符號后面的注釋,作用范圍是單行捷兰,語法為 "http:// "立叛。
alert() 語句
- 作用:在瀏覽器中彈出一個(gè)警示框,警示框中的內(nèi)容可以自定義贡茅。
- alert方法是js中內(nèi)制好的一個(gè)方法秘蛇,要想實(shí)現(xiàn)這個(gè)功能必須在alert關(guān)鍵字后面添加小括號執(zhí)行其做,自定義的內(nèi)容需要傳遞給方法中的參數(shù),輸出時(shí)參數(shù)的內(nèi)容會出現(xiàn)在頁面彈框中赁还。
- 語法:
- alert作為一個(gè)函數(shù)妖泄,如果要執(zhí)行,關(guān)鍵字后面必須要緊跟小括號艘策。
- 可以傳遞任意參數(shù)蹈胡,參數(shù)的數(shù)據(jù)類型不同,語法要求不同朋蔫。
- 如果要給參數(shù)添加一對引號罚渐,要么是單引號,要么是雙引號驯妄,不能一單一雙荷并。
- 所有的有特殊功能的符號都必須是英文符號
- alert()語句后面必須要添加英文狀態(tài)下的分號。
- js對換行青扔,縮進(jìn)和空格不敏感源织。
- 語句的執(zhí)行順序是從上往下,從左往右 加載執(zhí)行的微猖。
prompt() 語句
- 作用:彈出一個(gè)對話框雀鹃,內(nèi)部有一個(gè)提示語句以及一個(gè)輸入框,可以在輸入框中根據(jù)提示任意輸入內(nèi)容励两。
- 是js的內(nèi)置功能黎茎,必須添加小括號才能執(zhí)行,有兩個(gè)參數(shù)可以傳遞当悔,每個(gè)參數(shù)一般都是字符串類型傅瞻,必須添加引號,兩個(gè)參數(shù)中間用逗號分隔盲憎。第一個(gè)參數(shù)表示提示內(nèi)容嗅骄,第二個(gè)參數(shù)表示默認(rèn)值,可以不傳遞饼疙。
console 控制臺
- 瀏覽器審查元素中的console部分溺森,可以調(diào)試程序中出現(xiàn)的bug∫っ校可以提示錯(cuò)誤的個(gè)數(shù)屏积,錯(cuò)誤的類型以及錯(cuò)誤所在的位置。
- 可以在控制臺中直接書寫一些js代碼磅甩,并且執(zhí)行炊林。
- 在控制臺打印輸出:console.log();方便進(jìn)行bug定位。
數(shù)據(jù)類型
字面量
- 用于表達(dá)一個(gè)固定值的表示方法卷要,又叫做常量渣聚。所見即所得独榴,js程序執(zhí)行到代碼中的字面量,會立即知道它的數(shù)據(jù)類型以及他的值奕枝」桌疲可以用于表示固定的值凭舶,比如數(shù)字胶哲,字符串,布爾值和undefined赎瑰。
數(shù)字字面量
這里的數(shù)字就是數(shù)學(xué)意義上的數(shù)字薄声。
數(shù)字字面量區(qū)分:整數(shù)字面量,浮點(diǎn)數(shù)字面量题画,特殊值默辨。
書寫時(shí)直接書寫字面量,不需要添加任何輔助符號苍息。
八進(jìn)制 數(shù)值范圍是0-7缩幸,逢八進(jìn)一,前綴用0或者0o表示竞思。如012/0o12表谊,表示1*8 + 2*1 = 10
十六進(jìn)制 數(shù)值范圍是0-9和a-f, 逢十六進(jìn)一,前綴用0x或0X表示盖喷。如0x1a爆办,表示1*16 + 10*1 = 26
注意:在八進(jìn)制中,如果超出0-7的范圍课梳,并且是使用的0開頭的前綴距辆,計(jì)算機(jī)會自動裝換成十進(jìn)制的數(shù)字。如果是使用0o開頭的前綴暮刃,則會拋出語法錯(cuò)誤異常跨算,同理十六進(jìn)制如果超出范圍,只會拋出語法異常椭懊。
浮點(diǎn)數(shù)字面量
- 浮點(diǎn)數(shù)包含:整數(shù)诸蚕,小數(shù)點(diǎn),小數(shù)三部分氧猬。
- 浮點(diǎn)數(shù)不區(qū)分進(jìn)制背犯,所有的浮點(diǎn)數(shù)都是十進(jìn)制下的數(shù)字。
- 注意:如果浮點(diǎn)數(shù)大于0且小于一盅抚,可以省略小數(shù)點(diǎn)之前的0不寫媳板。
- 浮點(diǎn)數(shù)的最高精度是17位小數(shù),在計(jì)算的時(shí)候存在精確度問題泉哈。例如0.2+0.1蛉幸,得到的不是0.3破讨,而是0.30000000000...04。
特殊數(shù)字字面量
- NaN:not a number表示不是一個(gè)正常的數(shù)字奕纫,但是類型還是Number類型提陶,這個(gè)數(shù)字沒辦法用之前的表示方法表示。NaN與任何一個(gè)值都不相等匹层,包括它本身隙笆。isNaN()方法,來判斷他是不是NaN類型升筏。
字符串字面量
- 描述:字符串是由任意個(gè)數(shù)的有序或者無序字符組成的串撑柔,在js中有自己特殊的寫法。
- 組成:字母您访、漢字铅忿、特殊字符、空白符等灵汪。
- 寫法:用一對單引號或者雙引號及引號內(nèi)的字符構(gòu)成檀训,引號中間的字符可以是任意對個(gè),也可以是沒有字符的空字符串享言。
- 注意:字符串中如果字符包含雙引號峻凫,則外層應(yīng)該用單引號包裹,反之則用雙引號包裹览露。
轉(zhuǎn)義字符
- 字符串中有一些特殊的字符不能直接書寫荧琼,可以使用轉(zhuǎn)義""字符對特殊字符進(jìn)行轉(zhuǎn)義。
- 在字符串中可以使用轉(zhuǎn)義字符\加普通字母差牛,代替一下特殊字符铭腕。如\n表示換行,
\t表示table制表多糠。
變量
- 描述:是計(jì)算機(jī)內(nèi)存中存儲數(shù)據(jù)的標(biāo)識符累舷,根據(jù)變量名稱可以獲取到內(nèi)存中存儲的數(shù)據(jù)。變量相當(dāng)于一個(gè)容器夹孔,內(nèi)部可以存儲任意類型的數(shù)據(jù)被盈,使用變量時(shí),就是內(nèi)存存儲的數(shù)據(jù)搭伤。
- 作用:可以方便的獲取或者修改內(nèi)存中的數(shù)據(jù)只怎。
- 定義:在使用變量之前,必須先有定義怜俐,使用var關(guān)鍵字定義變量身堡,關(guān)鍵字后面跟一個(gè)空格,空格后面是變量名稱拍鲤。
變量的命名規(guī)則和規(guī)范
- 規(guī)則:
- 由字母贴谎、數(shù)字汞扎、下劃線和$組成,不能以數(shù)字開頭擅这。
- 字母區(qū)分大小寫澈魄。
- 不能是關(guān)鍵字和保留字,關(guān)鍵字和保留字指的是js中的特殊詞仲翎。
- 規(guī)范:
- 變量名必須有意義痹扇。
- 遵循駝峰命名法。多個(gè)單詞組合而成的溯香,第一個(gè)單詞首字母小寫鲫构,后面的單詞首字母需要大寫。
變量賦值
- 變量定義之后玫坛,初始時(shí)沒有進(jìn)行賦值结笨,內(nèi)部有一個(gè)默認(rèn)存儲的值叫undefined(未定義),表示變量內(nèi)部未賦值昂秃,可以存儲數(shù)據(jù)了禀梳。
- 變量賦值的方式:通過等號=賦值杜窄,等號右邊的值賦值給左邊的變量肠骆。
- 注意:書寫時(shí),等號=兩側(cè)習(xí)慣書寫一個(gè)空格塞耕。
變量賦值的幾種情況
- 變量賦值時(shí):內(nèi)部可以存儲任意類型的數(shù)據(jù)蚀腿,甚至是一個(gè)變量。賦值過程中扫外,等號右側(cè)的變量使用的是存儲的數(shù)據(jù)莉钙。
- 注意:變量參與賦值過程時(shí),等號 左邊右不變筛谚。等號左側(cè)會被賦值磁玉,將來值發(fā)生變化,等號右側(cè)的變量使用內(nèi)部的值參與運(yùn)算驾讲,自身不會發(fā)生變化蚊伞。
- 變量的賦初值過程可以與聲明過程寫在一起。也可以通過多次賦值的方式改變內(nèi)部的數(shù)據(jù)吮铭。
- 一個(gè)關(guān)鍵字var可以同時(shí)定義多個(gè)變量时迫,并且都賦初值。多個(gè)變量之間用逗號進(jìn)行分隔谓晌,最后一個(gè)變量侯后面使用分號進(jìn)行結(jié)尾掠拳。
數(shù)據(jù)類型
簡單的數(shù)據(jù)類型
- Number 數(shù)字類型
- String 字符串類型
- undefined undefined類型
- Boolean 布爾類型
- null null類型
復(fù)雜的數(shù)據(jù)類型
- Object 對象類型
Number 類型
- 數(shù)字類型,不區(qū)分整數(shù)纸肉、浮點(diǎn)數(shù)溺欧、特殊值喊熟,都是Number類型。
字符串類型
- 字符串用于表示文本胧奔,通過將其內(nèi)容括在引號內(nèi)編寫逊移。
Boolean 類型
- Boolean只有true和flase兩個(gè)字面量的值,必須是小寫字母龙填。true為1胳泉,flase為0。
Undefined 類型
- undefined本身是一個(gè)數(shù)據(jù)岩遗,表示未定義扇商。
- 變量只聲明的時(shí)候,值默認(rèn)是undefined宿礁。
Null類型
- null 本身是一個(gè)數(shù)據(jù)案铺。
- 從邏輯角度,null值表示一個(gè)空對象指針梆靖。
- 如果定義的變量準(zhǔn)備再將來用于保存對象控汉,最好將該變量的初始化為null。
檢測數(shù)據(jù)類型
- 使用typeof的方法進(jìn)行數(shù)據(jù)檢測返吻。
- 檢測方式:在typeof后面加小括號()執(zhí)行姑子,將要檢測的數(shù)據(jù)放在小括號內(nèi)部。
- 例如:console.log(typeof("字符串類型"))
- 也可以將typeof作為關(guān)鍵字测僵,后面加空格街佑,空格后面添加數(shù)據(jù)的方式,檢測數(shù)據(jù)捍靠。
- 例如:console.log(typeof "String類型")
變量的數(shù)據(jù)類型
- Js語言是一門動態(tài)類型的語言沐旨,變量并沒有一個(gè)單獨(dú)的數(shù)據(jù)類型,而是會隨著內(nèi)部存儲數(shù)據(jù)的變化榨婆,數(shù)據(jù)類型也會發(fā)生變化磁携。
- 變量的數(shù)據(jù)類型,與內(nèi)部存儲數(shù)據(jù)有關(guān)良风。
- 將來使用變量時(shí)谊迄,需要知道內(nèi)部存儲的數(shù)據(jù)是什么類型,避免程序出錯(cuò)拖吼。
數(shù)據(jù)類型轉(zhuǎn)換
轉(zhuǎn)換成字符串類型
- 數(shù)據(jù)toString()方法
- String()方法鳞上,有些值沒有toString()方法,這時(shí)候可以使用String(),比如undefined和null
- +號拼接字符串方法
- nun + ""吊档,當(dāng)+兩邊一個(gè)操作符是字符串類型篙议,一個(gè)操作符是其他類型的時(shí)候,會先把其他類型轉(zhuǎn)成字符串在進(jìn)行字符串拼接,返回字符串鬼贱。
轉(zhuǎn)換成數(shù)值類型
Number()方法
-
轉(zhuǎn)型函數(shù)Number()可以用于任何數(shù)據(jù)類型移怯,將其他數(shù)據(jù)類型轉(zhuǎn)為數(shù)字。
- 字符串:純數(shù)字字符串轉(zhuǎn)換為對應(yīng)數(shù)字这难,空字符串和空白字符串轉(zhuǎn)為0舟误,非空非純數(shù)字字符串轉(zhuǎn)為NaN。
- 布爾值:true轉(zhuǎn)為1姻乓,false轉(zhuǎn)為0
- undefined:轉(zhuǎn)為NaN嵌溢。
- null:轉(zhuǎn)為0。
parseInt()方法:字符串轉(zhuǎn)整數(shù)方法
-
作用:對浮點(diǎn)數(shù)進(jìn)行取整操作蹋岩;將字符串轉(zhuǎn)為整數(shù)數(shù)字赖草。
- 對數(shù)字取整功能,直接舍棄小數(shù)部分剪个,只保留整數(shù)秧骑。
- 將字符串轉(zhuǎn)為整數(shù)數(shù)字,也包含取整功能扣囊。
字符串中乎折,必須是純數(shù)字字符串或者數(shù)字字符開頭的字符串,才能轉(zhuǎn)換為正常數(shù)字侵歇,且只取整數(shù)部分骂澄。如果不是數(shù)字開頭的字符,回轉(zhuǎn)換為NaN盒至。
parseFloat(): 字符串轉(zhuǎn)浮點(diǎn)數(shù)方法酗洒;
作用:將字符串轉(zhuǎn)為浮點(diǎn)數(shù)數(shù)字士修。
要求:滿足浮點(diǎn)數(shù)數(shù)字字符必須在字符串開始位置枷遂,如果不在開始位置返回值都是NaN。
轉(zhuǎn)換成布爾類型
- Boolean()方法
- 轉(zhuǎn)型函數(shù)Boolen()可以用于任何數(shù)據(jù)類型棋嘲,將其它數(shù)據(jù)類型轉(zhuǎn)為布爾類型的值酒唉。
- 轉(zhuǎn)為false: NaN、0沸移、空字符串痪伦、null、undefined
- 轉(zhuǎn)為true: 非0非NaN數(shù)字雹锣、非空字符串网沾。
操作符
- 操作符也叫運(yùn)算符,是js中發(fā)起運(yùn)算的最簡單的方式蕊爵。
- 表達(dá)式的組成包含操作數(shù)和操作符辉哥,表達(dá)式會得到一個(gè)結(jié)果,然后用結(jié)果參與程序。
算數(shù)運(yùn)算符
- +醋旦、-恒水、*、/饲齐、%钉凌、()
- NaN參與的運(yùn)算,得到的結(jié)果都是NaN捂人。
- Infinity 參與的運(yùn)算御雕,視情況而定。
- 有字符串參與的 + 運(yùn)算:+ 變?yōu)檫B接字符滥搭,將前后連接成整體字符串饮笛。
- 隱士轉(zhuǎn)換:除了字符串參與的 + 運(yùn)算,其他情況下论熙,所有其他數(shù)據(jù)類型參與數(shù)學(xué)運(yùn)算時(shí)福青,計(jì)算機(jī)暗中將其他數(shù)據(jù)類型先自動轉(zhuǎn)化成數(shù)字類型,再參與運(yùn)算脓诡。這個(gè)過程中不需要使用parseInt()和parseFloat()无午、Number()等方法,過程是暗中進(jìn)行的祝谚,這就是隱士轉(zhuǎn)換宪迟。
比較運(yùn)算符
- 也叫做關(guān)系運(yùn)算符,一個(gè)比較運(yùn)算符比較他的操作數(shù)交惯,并返回一個(gè)布爾類型的值次泽。
- > 大于
- < 小于
- >= 大于等于
- <= 小于等于
- == 相等,只判斷數(shù)值大小是否相等席爽,不判斷數(shù)據(jù)類型意荤。
- != 不等,與相等完全相反
- === 全等只锻,不光要判斷值相等玖像,還要判斷數(shù)據(jù)類型相等。
- !== 不全等齐饮,與全等完全相反
- 比較順序:從前往后進(jìn)行比較捐寥,前面得出的結(jié)果再與后面比較。
- 當(dāng)NaN參與比較運(yùn)算的時(shí)候祖驱,除了不等于和不全等于返回true之外握恳,其他的比較運(yùn)算均返回false。
- 其他數(shù)據(jù)類型與數(shù)字類型相比較的時(shí)候捺僻,也會進(jìn)行隱士轉(zhuǎn)換乡洼。
- null的判斷比較特殊,當(dāng)null和0比較時(shí),相等判為false就珠,<= 和 >= 判斷為true寇壳。
- null == undefined
- 兩個(gè)字符串進(jìn)行比較的時(shí)候,不會發(fā)生隱士轉(zhuǎn)換妻怎,轉(zhuǎn)換成數(shù)字壳炎,而是比較兩個(gè)字符串的unicode編碼順序,比較時(shí)不關(guān)心字符串的長度逼侦,從第一個(gè)字符開始比較匿辩,依次往后比較,直到比較出大小榛丢,就不再進(jìn)行比較铲球。
邏輯運(yùn)算符
- 邏輯運(yùn)算符常用于布爾類型值之間,當(dāng)操作數(shù)都是布爾值時(shí)晰赞,返回值也都是布爾值稼病。
- && 邏輯運(yùn)算符 且
- || 邏輯運(yùn)算符 或
- ! 邏輯運(yùn)算符 非
- 除了布爾類型的值之外,其他數(shù)據(jù)類型的值也可以參與邏輯運(yùn)算掖鱼。運(yùn)算過程中需要將操作數(shù)隱士轉(zhuǎn)為布爾類型的值然走,參與判斷計(jì)算。最終運(yùn)算結(jié)果還是原來某個(gè)位置的數(shù)據(jù)戏挡。
- 并非所有邏輯元素返回的結(jié)果都是布爾值芍瑞,其他數(shù)據(jù)參與得到的就是數(shù)據(jù)本身。
- 如果是同種運(yùn)算符的話褐墅,按照從前往后的順序進(jìn)行執(zhí)行拆檬。如果是綜合邏輯運(yùn)算符的話,是按照非妥凳、與竟贯、或的順序進(jìn)行執(zhí)行。
- a && b; 當(dāng)a為true的時(shí)候猾封,值為b澄耍,當(dāng)a為false的時(shí)候噪珊,選擇a晌缘。
- a || b; 當(dāng)a為true的時(shí)候,選擇a痢站,當(dāng)a為false的時(shí)候磷箕,選擇b。
賦值運(yùn)算符
- 賦值運(yùn)算符必須有變量參與運(yùn)算阵难。主要會做兩件事情
- 將變量中原始的值參與于右側(cè)的值進(jìn)行數(shù)學(xué)運(yùn)算岳枷。
- 將運(yùn)算結(jié)果重新賦值給變量。
- 賦值運(yùn)算符符號
- = 等于
- += 加等于
- -= 減等于
- *= 乘等于
- /= 除等于
- %= 取余等于
- ++ 遞加
- -- 遞減
一元運(yùn)算符
- ++和--也叫一元運(yùn)算符,只有一個(gè)操作數(shù)空繁。
- ++ 和 -- 可以寫在變量的前面和后面殿衰,但是位置不同可能會導(dǎo)致程序的運(yùn)算結(jié)果不同。
- 例如a++: ++在變量符號之后盛泡,a++在參與程序運(yùn)算的過程中使用的原始值闷祥,是沒有提前進(jìn)行加1的值。當(dāng)?shù)诙卧偈褂米兞縜時(shí)傲诵,此時(shí)的a表示已經(jīng)加1后的新值】常現(xiàn)參與,后自加拴竹。
- ++a: ++符號在變量之前悟衩,++a在參與程序運(yùn)算過程中,先進(jìn)行加1運(yùn)算栓拜,并將加1后的值賦予a座泳,當(dāng)?shù)诙斡胊時(shí),a也是加1后的值幕与。先自加钳榨,后參與。
運(yùn)算優(yōu)先級
- 優(yōu)先級從高到低
- ()優(yōu)先級最高
- 一元運(yùn)算符 ++ -- !
- 算術(shù)運(yùn)算符 先 *纽门、/薛耻、% 后 +、-
- 關(guān)系運(yùn)算符 > >= < <=
- 相等運(yùn)算符 == != === !===
- 邏輯運(yùn)算符 先&& 后||
- 賦值運(yùn)算符
表達(dá)式
- 一個(gè)表達(dá)式可以生成一個(gè)值赏陵,可能是運(yùn)算饼齿、函數(shù)調(diào)用、也有可能是字面量蝙搔。表達(dá)式可以放在任何需要值的地方缕溉。
- 特點(diǎn):表達(dá)式會先執(zhí)行出一個(gè)結(jié)果,然后再參與其他程序吃型。
if語句
- if語句是最常用的條件分支語句证鸥,作用就是通過某個(gè)指定的判斷條件,決定走哪個(gè)分支的代碼勤晚。
- 結(jié)構(gòu):
if(表達(dá)式1){ 執(zhí)行分支1 }else if(表達(dá)式2) { 執(zhí)行分支2 }else { 執(zhí)行分支3 }
- 注意事項(xiàng)
- if語句可以實(shí)現(xiàn)選擇的功能枉层,兩個(gè)分支可以選擇一個(gè),不會都執(zhí)行
- if語句可以不寫else分支赐写,表示條件成立就執(zhí)行后面的結(jié)構(gòu)體鸟蜡,如果條件不成立,就直接跳出if語句不執(zhí)行挺邀。
- 如果if語句的結(jié)構(gòu)體是單行語句揉忘,可以將{}省略跳座。
- if語句能夠控制自己內(nèi)部的流程,但是不論走到那個(gè)分支泣矛,結(jié)束后都要繼續(xù)執(zhí)行if語句后面的程序疲眷。
if嵌套語句
- if語句的結(jié)構(gòu)體部分,可以是任意代碼您朽,也可以是另外一組if語句咪橙。
- 如果想執(zhí)行內(nèi)部的if語句,必須先滿足外面的if語句虚倒。同時(shí)還要滿足內(nèi)部if語句的某個(gè)條件美侦。
三元表達(dá)式
- 又叫三元操作符,必須有三個(gè)操作數(shù)參與的運(yùn)算魂奥。
- 操作符號:?:
- 表達(dá)式:在參與js程序時(shí)菠剩,都必須先計(jì)算出表達(dá)式的結(jié)果,才能參與后面的程序耻煤。
- 由于三元表達(dá)式具備了一些選擇的效果具壮,所以也是一種條件分支語句。
三元表達(dá)式語法
- 語法: boolean_expression?true_value: false_value
- 描述:表達(dá)是在參與三元運(yùn)算的時(shí)候哈蝇,必須要得到一個(gè)布爾類型的值(true或false)棺妓,來作為判斷依據(jù)。如果為true炮赦,則選擇true_value怜跑,如果為false,則選擇false_value吠勘。
- 優(yōu)點(diǎn):
- 在二選一的情況下性芬,三元表達(dá)式結(jié)構(gòu)更加簡單。
- 三元表達(dá)式作為一個(gè)表達(dá)式參與程序時(shí)剧防,必須運(yùn)算出結(jié)果才能參與程序植锉,可以利用這個(gè)特點(diǎn),將二選一的結(jié)果賦值給一個(gè)變量峭拘。
- 遇到給一個(gè)變量進(jìn)行二選一的情況下俊庇,可以使用三元表達(dá)式。
switch語句
switch允許一個(gè)程序求一個(gè)表達(dá)式的值鸡挠,并且將這個(gè)值跟內(nèi)部的case標(biāo)簽的值進(jìn)行匹配辉饱,如果匹配成功,則執(zhí)行相應(yīng)case里的執(zhí)行體宵凌,在匹配的時(shí)候是進(jìn)行了全等匹配鞋囊,不止值相等,數(shù)據(jù)類型也要相等瞎惫。
-
語法:
switch(表達(dá)式) { case 值1: 結(jié)構(gòu)體1; break; case 值2: 結(jié)構(gòu)體2; break; ... default: 結(jié)構(gòu)體n; break; }
-
運(yùn)行機(jī)制
- switch首先會將表達(dá)式計(jì)算出一個(gè)結(jié)果溜腐,用結(jié)果去匹配結(jié)構(gòu)體內(nèi)部的case;
- 從上往下進(jìn)行匹配瓜喇,如果匹配成功挺益,會立即執(zhí)行這個(gè)case后面的語句,直到遇到break跳出整個(gè)switch語句乘寒。
- 如果前面的case沒有匹配成功望众,會跳過case之間的語句,去匹配下一個(gè)case伞辛,直到匹配成功烂翰,如果都沒有成功就執(zhí)行default后面的語句。
-
注意事項(xiàng):
- 通過一個(gè)變量匹配多個(gè)值得時(shí)候蚤氏,優(yōu)先考慮switch語句甘耿。
- default可以不寫,相當(dāng)于if語句不寫else竿滨;
- 根據(jù)結(jié)構(gòu)需要有時(shí)候必須要在每個(gè)case后面寫break佳恬。如果不寫break,對應(yīng)case語句執(zhí)行完之后不會跳出switch語句于游,而是會繼續(xù)執(zhí)行其他case后面的語句毁葱,直到遇到一個(gè)break。
總結(jié)
- if語句:最常用的語句贰剥,所有的判斷情況都能書寫倾剿。
- 三元表達(dá)式:多用于給變量賦值根據(jù)條件二選一的情況。
- switch語句:多用于給一個(gè)表達(dá)式去匹配多種固定值的可能性的情況蚌成。
循環(huán)語句
for循環(huán)
描述:for循環(huán)語句是一種前測試的循環(huán)語句柱告,在執(zhí)行循環(huán)之前,先要判斷入口條件笑陈,如果條件為真际度,可以循環(huán)執(zhí)行,如果條件為假涵妥,則必須跳出循環(huán)不再執(zhí)行乖菱。
-
語法:
for(;;){ } 呆板的語法 for(定義循環(huán)變量;變量的最大值或最小值;步長){ 循環(huán)體; }
-
注意事項(xiàng):
- 小括號內(nèi)必須包含兩個(gè)分號。
- for循環(huán){}后面可以不寫分號蓬网。
- 如果判斷條件不寫窒所,相當(dāng)于永遠(yuǎn)為真,for循環(huán)則會一直執(zhí)行帆锋。出現(xiàn)死循環(huán)吵取。
- for循環(huán)結(jié)構(gòu)體內(nèi)可以嵌套任何語句。
do while循環(huán)
- do while 循環(huán)是一種后測試循環(huán)語句锯厢,會先執(zhí)行一次結(jié)構(gòu)體皮官,執(zhí)行完后才會去判斷入口條件脯倒,如果條件為真,能夠繼續(xù)下一次循環(huán)捺氢,如果條件為假則跳出循環(huán)藻丢。
do while 循環(huán)語法
- do {
結(jié)構(gòu)體
}while(條件表達(dá)式); - do: 做什么。后面是每次循環(huán)的循環(huán)體
- while: 當(dāng)....時(shí)候摄乒。
- 先執(zhí)行一次循環(huán)體悠反,然后當(dāng)條件表達(dá)式為真時(shí),可以繼續(xù)循環(huán)馍佑。
do while 循環(huán)注意事項(xiàng)
- 如果循環(huán)中需要循環(huán)變量參與斋否,循環(huán)變量必須定義在循環(huán)外面,否則會被重置拭荤。
- 循環(huán)變量自加的過程需要寫在{}循環(huán)體內(nèi)部茵臭。
- 如果將循環(huán)變量寫在結(jié)構(gòu)體內(nèi),i的初始值每次都會被重置穷劈,容易出現(xiàn)死循環(huán)笼恰。
- 變量自加過程卸載輸出語句前面和后面,結(jié)果是不同的歇终。
- do while 循環(huán)即便條件第一次測試就為假社证,也會執(zhí)行一次結(jié)構(gòu)體。
- 至少會執(zhí)行一次循環(huán)體评凝。
while 循環(huán)
- while循環(huán)是一種前測試循環(huán)語句追葡,在執(zhí)行循環(huán)體之前都要測試入口條件,條件為真繼續(xù)執(zhí)行奕短,條件為假直接跳出循環(huán)宜肉。
while 循環(huán)語法
- while(條件表達(dá)式){
循環(huán)體;
} - 當(dāng)條件表達(dá)式為真時(shí),執(zhí)行循環(huán)體翎碑,如果為假谬返,跳出循環(huán)。
while循環(huán)注意事項(xiàng)
- 如果需要循環(huán)變量岑宇日杈,必須定義在循環(huán)體外部遣铝,避免被重置。
- 循環(huán)變量自加的過程寫在循環(huán)體內(nèi)部莉擒。
break 語句
- break語句的作用可以立即停止當(dāng)前的for酿炸、do while、while循環(huán)涨冀。
- 根據(jù)一些條件設(shè)置break位置填硕,直到循環(huán)能夠執(zhí)行到break語句立即停止執(zhí)行,跳出循環(huán)鹿鳖。
break 注意事項(xiàng)
- break如果沒有特殊只是扁眯,只能停止自己所在的那一層循環(huán)壮莹,并不能終止外部循環(huán)。
- 如果想停止外層循環(huán)恋拍,可以給外層循環(huán)添加一個(gè)標(biāo)簽名label垛孔,在內(nèi)層循環(huán)的break關(guān)鍵字后面空格加一個(gè)label名藕甩。
// 當(dāng)k滿足條件大于等于2時(shí)施敢,會終止所有循環(huán)。
waiceng : for (var i = 1; i <= 4; i++) {
for (var k = 1; k <= 4; k++) {
console.log(i, k)
if (k >= 2) {
break waiceng;
}
}
}
continue 語句
- continue表示當(dāng)前的異常循環(huán)數(shù)據(jù)不是程序想要的狭莱,會立即停止當(dāng)前次的循環(huán)僵娃,立即進(jìn)入下一次循環(huán)。
continue 注意事項(xiàng)
- 要根據(jù)特殊條件設(shè)置continue的位置腋妙。
- 如果沒有特殊指示默怨,只能進(jìn)入自己的下一次循環(huán),不能立即停止外層循環(huán)的這一次進(jìn)入下一次骤素。
- 控制外層循環(huán)的方式與break一樣匙睹,都是添加外層的標(biāo)簽名。
窮舉思想
- 窮舉思想:是一種解決問題的方法济竹,將所有的需要數(shù)據(jù)所在的范圍內(nèi)所有的數(shù)據(jù)都意義列舉出來痕檬,再根據(jù)規(guī)律的條件對所有這些數(shù)據(jù)進(jìn)行篩選,這種方式就是窮舉法送浊。
制作方法
- for循環(huán):外層使用for循環(huán)進(jìn)行意義列舉梦谜。
- if語句:內(nèi)層用if語句進(jìn)行判斷,篩選需要的數(shù)據(jù)袭景,如果滿足條件就操作數(shù)據(jù)唁桩,如果不滿足條件則跳過,看下一次循環(huán)的數(shù)據(jù)耸棒。
累加器
- 累加器本質(zhì)就是變量荒澡。實(shí)現(xiàn)累加的效果,就是利用循環(huán)与殃,每次循環(huán)就將新的數(shù)據(jù)加到原始的變量中去单山,賦值過程是一個(gè)加等于賦值。
累加器注意事項(xiàng)
- 累加器必須定義在循環(huán)外面的前面奈籽,如果定義在循環(huán)內(nèi)部饥侵,每次循環(huán)都會將累加器重置,不能實(shí)現(xiàn)累加功能衣屏。
- 累加器的初始值必須設(shè)置躏升,而且必須設(shè)置為0,不會影響累加結(jié)果狼忱。
- 使用最終累加結(jié)果時(shí)膨疏,必須在for循環(huán)結(jié)束后的外面一睁,如果寫在循環(huán)內(nèi)部,循環(huán)沒有結(jié)束佃却,并不是最終需要的值者吁。