1.函數:面試
封裝一個專門任務的步驟清單的代碼段函數
起一個任務名編碼
when:只要定義一個專門的任務,都要封裝一個函數;url
使用函數:聲明 定義 調用;3d
如何定義一個函數:code
function 函數名([參數列表]){對象
函數體:代碼段blog
return 返回值utf-8
}作用域
如何調用函數:var 返回值=函數名(參數列表);或 函數名();***********
一次定義,反覆使用,代碼重用;
一次修改,到處生效;
-- 函數的參數:接受「傳入函數內」的數據(變量);
when:若是一個函數必須某些數據才能正常執行;
參數可以讓函數變得更靈活
定義: function 函數名(變量1,變量2,變量3...){};*********
調用: 函數名(變量1,變量2,變量3...);
-- 返回值:方法調用後返回的結果;
function 函數名([參數列表]){
函數體:代碼段
return 要返回的數據;
}
return後不加數據,單獨使用,表示退出函數執行;
函數僅負責返回值,不保存值;獲取返回值:var 返回值=函數名(參數列表);document.write(返回值); **********
********** 函數是引用類型的對象;函數名是指向函數對象的變量;(函數名存在window,代碼段存在window外的一個地址;)
函數的定義和調用過程:
1.window中建立函數名變量;
2.window外建立了函數定義的對象-->封裝函數的定義
函數名變量中保存了指向函數對象的地址
3.調用時,建立局部變量:2種;
4.調用過程當中,若是局部有,就不用全局的;
若是局部沒有,纔會用全局的;
若是全局也沒有,會報錯;
5.調用結束後,釋放全部全局變量!
2.變量做用域:
一個變量的可用範圍;
-- 全局做用域:一個變量能夠在程序的任何位置被訪問。
-- 函數做用域:一個變量僅能在函數調用時,內部被訪問。
全局變量:定義在全局做用域中的變量;2種;
1.直接在任何函數外定義的變量;
全局變量都屬於window--全局對象;
2.不管在任何位置,爲沒有var聲明過的變量賦值;自動建立同名全局變量;
局部變量:定義在函數做用域中的變量;2種;
1.函數定義內部聲明的變量;
2.參數變量也是局部變量;
1.聲明提早:***************
在程序執行前或函數被調用前;
將var聲明的變量和function聲明的函數
提早到「當前做用域」的頂部集中建立;
僅聲明提早,賦值留在原地;***************
2.按值傳遞:
將實參變量的值複製一份副本給方法的形參變量;
將 全局變量 「當參數」傳給函數時,是複製了 全局變量 的值,函數內的計算不會改變 全局變量;***********
若是函數沒有參數,用了 全局變量 計算,就會「改變全局變量的值」。
(demo4);
3.全局函數:ES標準中,已經定義好的,開發者直接調用的函數;
- parseInt(str)
- paeseFloat(str)
- isNaN(num)
- isFinite :判斷一個數字是否有限;
無窮大:Infinity; 4/0;
- 編碼,解碼 (demo5)
編碼:將url中的非法字符,改成合法字符的
- encodeURIComponent();
/s?word=%E5%BC%AO
張
utf-8格式編碼
在utf-8一個漢字佔3字節;
url中不容許出現多字節字符!(亂碼)
用utf-8格式編碼,將url中多字節字符,轉爲單字節;
url中不容許參數值中出現保留字:如:/
解碼:將url中對已編碼的標符解碼,恢復原文;
- decodeURIComponent();
- eavl:計算並執行以字符串表示的表達式的值:如:算算式,解釋並執行代碼;(demo5)
4.分支結構:
程序結構分3大類:
1.順序:程序默認由上向下執行;
2.分支:根據條件判斷的結果,有選擇的執行不一樣代碼;3種;(demo6)
-- if 結構:1件事 知足條件就執行,不然就不執行;
語法:if(條件){
知足條件才執行的代碼;
}
-- if...else... 結構:2件事 知足條件就執行if中的代碼段,不知足條件就執行else中的代碼段;
語法:if(條件){
知足條件才執行的代碼;
}else{
不知足條件就執行else中的代碼段;
}
-- else if 結構:多件事,根據條件, 多選一執行;
語法:if(條件1){
知足條件1才執行的代碼;
}else if(條件2){
知足條件2才執行的代碼;
}...else{
以前條件都不知足就執行else中的代碼段;
}
只要一個條件知足,執行完就退出,後面的不執行;*************
分支結構 VS 三目/短路 ****************** (demo7)
若是隻是返回值 -->三目/短路
若是操做複雜 -->分支結構
3.循環:程序能夠反覆執行同一代碼段,到達臨界時退出;
需求:
- Input
- Process
- Output
分支結構:
1.一個條件,一件事知足就作,不忙足不做:短路、if結構
Demo:
Var a=80,b=90;
a<b&&(a+=b,b=a-b,a-=b);//a=90,b=80,
2.一個條件兩件事,二選一:三目、if else、||
3.一個條件多件事 多選一: 三目、switch case(條件全等狀況下)
4.操做複雜,且條件包含不等:if elseif
用最短的代碼作更多的事情;
面試題:
function Human(){
return Human; //構造函數結尾return一個對象
} ||
var boy=new Human();//new不在建立對象,等效於Human()
var man=Human();
console.log(boy===man);
//true