一、回圈
1.在程式中,一組被重復執行的陳述句被稱為回圈體,能否繼續重復執行,取決于回圈的終止條件,由回圈體及回圈的終止條件組成的陳述句,被稱為回圈陳述句,
2.回圈執行的程序是①第一次回圈:第一次賦值,然后條件判斷,執行回圈體,最后執行累計,
②非第一次回圈:條件判斷,執行回圈體,最后執行累計,
3.continue,跳過本次進入下一次回圈,從continue當前位置跳過,上面的還是會執行,
4.break,停止回圈,從break當前位置停止回圈體的執行,
5.回圈的目的:為了重復的執行相同的任務或操作,減少了重復代碼的書寫,
6.for回圈總結:
①for回圈可以重復執行某些相同代碼
②for回圈可以重復執行些許不同的代碼,因為我們有計數器,
③for回圈可以重復執行某些操作,比如算術運算子加法操作,
④需求的增加,雙重for回圈可以做更多,更好看的效果,
⑤雙重for回圈,外層回圈一次,內層for回圈全部執行,
⑥for回圈是回圈條件和數字直接相關的回圈,
⑦分析比寫代碼更重要,
二、while回圈和do while回圈
1.while回圈:while(條件運算式){回圈體代碼}
執行思路:
①先執行條件運算式,如果結果為true則執行回圈體代碼;如果為false,則退出回圈,執行后面代碼,
②執行回圈體代碼
③回圈體代碼執行完畢后,程式會繼續判斷執行條件運算式,如條件仍為true,則會繼續執行回圈體,知道回圈條件為false,整個回圈程序才會結束,
2.do while回圈:do{回圈體--條件運算式為true時重復執行回圈體代碼}while(條件運算式)
執行思路:
①先執行一次do后的回圈體
②再判斷條件,如果為true,就會繼續執行回圈體,否則推出回圈,
三、函式
?函式有自己的作用域,凡是在函式中宣告的變數或者函式都只能在當前函式中生效,不會影響外部,
?函式多載:接受不同引數,執行不同的任務,
1.函式:就是封裝了一段可被重復呼叫執行的代碼塊,通過此代碼塊可以實作大量代碼的重復使用,
2.函式的使用:
①宣告函式:function 函式名(){函式體代碼}
②呼叫函式:函式名()
!!注意:
①function宣告函式的關鍵字小寫
②函式是做某件事情,函式名一般用動詞加名詞,如getSum
③函式不呼叫就不會執行
④函式呼叫時千萬記得小括號()
3.函式的引數(動態控制函式行為的變數值):
形參和實參:function 函式名(形參1,形參2,形參3,.....){}
函式名(實參1,實參2,實參3,......)
①形參:函式接收的引數,(形參(形式/表示引數),接收實參,相當于變數,遵循變數規范)
②實參:函式呼叫時傳入的引數,(實際的引數,相當于值,實參是傳遞給形參的,)
4.函式的回傳值:return
①函式中遇到return就立即停止執行,return下面的代碼就不執行了,立刻向函式呼叫回傳,
②函式默認的回傳值是undefined,
5.函式可以提升,而且是整體提升,
6.函式和變數同名的情況下,在提升的時候,函式權重要大于變數,
7.同名函式在提升的情況下,最后的函式生效,
8.return的用法
①return不管寫在什么代碼體里,只要往外能找到函式就可以生效,
②return只對當前函式生效,
四、陣列
1.創建陣列的兩種方式:
①構造方式——構造===一個函式通過new關鍵字呼叫就形成了構造newArray()
②字面量形式:var arr = [ ]
字面量是我們程式員快速書寫代碼的一種寫法,其底層還是呼叫了構造方式,
2.①基本資料型別是按值存盤;參考資料型別是存盤的地址,
②參考資料型別耗記憶體,比較吃記憶體;
對于特別占記憶體的值,除了單獨的存盤方式,為的是復用
③垃圾回識訓制,對于基本資料型別使用完就被回收了,參考資料型別除非作用域被銷毀,否則就會常駐記憶體了,
3.陣列中的新增元素(索引/下標/游標)
①可以通過修改length長度以及索引號增加陣列元素,length屬性是可讀寫,
②通過修改陣列索引新增元素
4.陣列方法:分兩類,一類可以修改原始陣列,一類不可以,
四大業務:增加,修改,洗掉,查找
①添加:push——向數字的末尾添加元素,
unshift——向陣列頭部添加元素,
②洗掉元素
delete 陣列名[下標]:只能洗掉值,但是位置還在,
尾部洗掉:陣列.pop()
頭部洗掉:陣列.shift()
③修改 ts===typescript
用下標修改
④查找
findIndex:尋找下表
find:尋找元素
⑤合并陣列
concat(回傳新陣列不會修改老陣列,屬于資料新增):陣列.concat(需合并的陣列)
⑥查詢
for回圈可以實作
內置的查找方法:find(找元素,找不到回傳undefined)
findIndex(找下標)
⑦陣列反轉
reverse(可以修改原始陣列):陣列.reverse()
5.push和unshift可以改變原始陣列,回傳值是最新陣列的長度,
6.清空陣列:arr.length = 0; var arr = [ ]
7.pop和shift傳參沒用用,只能掉一次刪一個,它們的回傳值是被洗掉的元素,
8.回呼函式:把一個函式作為引數給到另一個函式,
五、變數作用域、預決議和閉包
1.變數作用域:全域變數和區域變數
2.全域變數:在全域作用域下宣告的變數叫做全域變數(在函式外部定義的變數)
①全域變數在代碼的任何位置都可以使用
②在全域作用域下var宣告的變數是全域變數
③特殊情況下,在函式內部使用var宣告的變數也是全域變數(不建議使用)
3.區域變數:在區域作用域下宣告的變數叫做區域變數(在函式內部定義的變數)
①區域變數只能在函式內部使用
②在函式內部var宣告的變數是區域變數
③函式的形參實際上就是區域變數
4.全域變數和區域變數的區別
①全域變數在任何一個地方都可以使用,只有瀏覽器關閉時才會被銷毀,因此比較占記憶體,
②區域變數只能在函式內部使用,當其所在的代碼塊被執行時,會被初始化;當函式運行結束后,就會被銷毀,因此更節省記憶體空間,
5.作用域介紹
js的作用于分為全域作用域和區域作用域
①全域作用域:整個script標簽或者是一個單獨的js檔案
②區域作用域(函式作用域):在函式內部就是區域作用域,只在函式內部起作用,
6.預決議介紹
JavaScript決議器在運行JavaScript代碼的時候會分為兩步:預決議和代碼執行,
①預決議:js引擎就把js里面所有的var還有function提升到當前作用域的最上面,
②代碼執行:按照代碼書寫的順序從上往下執行,
7.預決議分為變數預決議(變數提升)和函式預決議(函式提升):
①變數提升就是把所有變數的宣告提升到當前作用域的頂部,不提升賦值部分,
②函式提升就是把所有的函式宣告提升到當前作用域的頂部,不呼叫函式,
③函式運算式呼叫必須寫在函式運算式下面,
8.函式自執行
①將函式運算式用小括號括起來后,呼叫;
②將函式運算式呼叫后用小括號括起來,
9.函式前面使用“+”等符號是為什么?
為了防止代碼壓縮后函式和其他的代碼拼成一行導致的語法錯誤,函式不可執行的問題,
10.arguments:表示形參的集合,是偽陣列(長得像陣列,但是不能使用陣列的方法)
11.arguments有只讀特性,可以使用length和下標取值,
12.如何將偽陣列變為陣列?
①for回圈可以實作
②ES6的方法:var arr = [...arguments];
13.作用域鏈就是函式嵌套的時候,內部函式可以訪問外部函式的值,
14.閉包:兩個函式嵌套,內部函式訪問外部函式的一個值,且內部函式需要被return暴露出來,這個程序叫閉包,
15.閉包的特性:使用嵌套函式訪問上游變數的時候,這個變數因為特殊的作用域環境,而不能被垃圾回識訓制釋放,所造成的變數常駐記憶體,這才是閉包的真正原因,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/550971.html
標籤:JavaScript
上一篇:JavaScript 使用 splice 方法洗掉陣列元素可能導致的問題
下一篇:返回列表
