JavaScript基礎(chǔ)1

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é)束佃却,并不是最終需要的值者吁。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市饲帅,隨后出現(xiàn)的幾起案子复凳,更是在濱河造成了極大的恐慌,老刑警劉巖灶泵,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件育八,死亡現(xiàn)場離奇詭異,居然都是意外死亡赦邻,警方通過查閱死者的電腦和手機(jī)髓棋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惶洲,“玉大人按声,你說我怎么就攤上這事√衤溃” “怎么了签则?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長币呵。 經(jīng)常有香客問我怀愧,道長,這世上最難降的妖魔是什么余赢? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任芯义,我火速辦了婚禮,結(jié)果婚禮上妻柒,老公的妹妹穿的比我還像新娘扛拨。我一直安慰自己,他們只是感情好举塔,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布绑警。 她就那樣靜靜地躺著,像睡著了一般央渣。 火紅的嫁衣襯著肌膚如雪计盒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天芽丹,我揣著相機(jī)與錄音北启,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛咕村,可吹牛的內(nèi)容都是我干的场钉。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼懈涛,長吁一口氣:“原來是場噩夢啊……” “哼逛万!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起批钠,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤宇植,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后价匠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體当纱,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呛每,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年踩窖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晨横。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡洋腮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出手形,到底是詐尸還是另有隱情啥供,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布库糠,位于F島的核電站伙狐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏瞬欧。R本人自食惡果不足惜贷屎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望艘虎。 院中可真熱鬧唉侄,春花似錦、人聲如沸野建。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽候生。三九已至同眯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間唯鸭,已是汗流浹背须蜗。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人唠粥。 一個(gè)月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓疏魏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親晤愧。 傳聞我的和親對象是個(gè)殘疾皇子大莫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容