函數
什麼是函數
和C語言同樣,在JavaScript語言中,做爲程序處理單元而放在一塊兒完成某一功能的段落能夠定義爲函數。
定義和調用函數
函數定義的基本語法是:
function functionName([arguments]){
JavaScript statements
[return expression]
}
function:表示函數定義的關鍵字;
functionName:表示函數名;
arguments:表示傳遞給函數的參數列表,各個參數之間用逗號格開,開覺得空;
{statements}:表示實現函數功能的函數體;
return expression:表示函數將返回expression的值,一樣是可選的語句。
傳遞參數
緊跟在函數名後面括號中的就是函數的參數列表
在函數的參數列表中定義出現的參數稱之爲形參
當調用一個函數時,能夠給函數傳遞實際的參數,稱之爲實參
值傳遞和引用傳遞
值傳遞
值傳遞是指實參的值以副本拷貝的形式傳遞給形參,改變形參的值並不會影響到實參的值。(基本數據類型)
引用傳遞
引用傳遞是指實參的值以引用的方式傳遞給形參,函數中對形參的操做會影響到實參的值。(對象)
return語句
在函數體中可使用return語句返回一個值,稱爲函數的返回值,簡稱爲函數值。
return語句後面簡單的跟一個變量或者表達式,能夠將其返回到函數調用的語句之中
return語句後面還能夠不跟任何表達式簡單表示函數的返回,這時程序流程將會中止函數體的執行而跳出整個函數,而無論return以後是否有其餘語句。
局部變量與全局變量
局部變量
在函數中定義的變量都稱之爲局部變量,它僅可以在定義它的函數內部使用。
全局變量
能在全局範圍內使用的就是全局變量,它們的定義出如今全部函數體以外。
遞歸函數
JavaScript支持在函數的內部直接或間接調用其自身,這種類型的函數稱爲遞歸函數。
因爲遞歸函數是本身調用本身,若是不加以精確控制,容易形成調用的死循環
練習:
遞歸函數
function sum(n){
if(0==n)return 0;
return n+sum(n-1);
}
alert(sum(100));
內置函數
在JavaScript中有一些功能是很經常使用的,它們以全局函數的形式提供給用戶,這些函數稱之爲內部函數。
內部函數其實是做爲一個特殊對象的方法而存在的,這個對象名稱爲Global
eval函數
對字符串表達式進行動態評估
(字符串轉換爲數字表達式)
它是有返回值的,若是數字符串是一個表達式,就會返回表達式的值。若是參數字符串不是表達式,沒有值,那麼將返回「undefined」
參數字符串做爲代碼執行時,是和調用eval函數的上下文相關的,即其中出現的變量或函數調用必須在調用eval的上下文環境中可用。
parseInt和parseFloat函數
parseInt()函數
這個函數的做用是將字符串類型轉換爲整數,用法是:
parseInt(string[,radix])
String表示待轉換的字符串
radix是可選的,表示String中數字的進制,默認爲10進制,取值範圍是2到32,即2到32進制
parseFloat()函數
這個函數的做用是將字符串類型轉換爲浮點數(即小數),它僅接收一個參數:
parseFloat(string)
escape和unescape函數
escape函數
escape函數接收一個字符串,並將其編碼爲URL可用的形式
escape是基於字節的編碼,所以任何字符均可以用URL編碼的形式表示,這在使用get方法提交信息時能夠避免中文字符的亂碼問題
unescape函數
使用escape編碼後的字符串能夠用unescape函數來解碼,得到原來的字符串
isNaN和isFinite函數
isNaN函數
來判斷一個變量是不是數字
對於非數字的變量,使用isNaN函數將返回true
isFinite函數
來判斷一個數字是不是無窮大或無窮小
對於無窮大或無窮小的數字,使用isFinite函數將返回false
isFinite(5/0) //返回無窮大數,函數返回false
數組
在JavaScript中,數組是一組變量的有序集合
數組能夠經過數組索引來使用一個變量
每一個數組都有必定長度,表示其中所包含的元素個數,元素的索引老是從0開始,而且最大值等於數組長度減1。
建立一個數組
建立數組對象使用Array函數,並經過new操做符來返回一個數組對象
建立數組的方式
new Array()
建立一個空數組,它的長度爲0
new Array(len)
建立一個長度爲len的數組
new Array([item0,[item1,[item2,…]]]
經過參數列表指定的元素初始化一個數組
數組元素
用objArray[index]的形式來使用數組中的一個元素
例如:var cnDays=[「星期日」, 「星期一」, 「星期二」, 「星期三」, 「星期四」, 「星期五」, 「星期六」];
cnDays[0] = 「星期日」
cnDays[1] = 「星期一」
cnDays[2] = 「星期二」
cnDays[3] = 「星期三」
cnDays[4] = 「星期四」
cnDays[5] = 「星期五」
cnDays[6] = 「星期六」
多維數組 多維數組並非JavaScript中的一種內部機制,而是Array對象性質的一種應用。這種應用基於JavaScript中變量的無類型性。 一個數組元素可經存儲任意類型的數據,這樣,當一個數組的元素是另外一個數組時,就表現爲二維或多維數組。 數組的length屬性 數組有一個重要的屬性:length 它表示數組的長度。經過length屬性可使用循環來遍歷一個數組。 for(var i=0; i<arr.length; i++){ …… } 內部數組 在Java中爲了方便內部對象的操做,可使用窗體(forms)、框架(frames)、元素(element)、連接(links)和錨(anchors)數組實現對象的訪問。 anchors[]:使用<A name=」anchorName」>標識來創建錨的連接。 links[]: 使用<A href=」URL」>來定義一個超文本連接項。 forms[]: 在程序中使用多窗體時,創建該數組。 elements[]:在一個窗口中使用元素時,創建該數組。 frames[]:創建框架時,使用該數組 經過document. 內部數組[下標值] 訪問