標籤:
一、函數
函數對於任何一種程式設計語言都是非常核心的概念,它的便利之處在於,我們可以通過函數名的隨時調用( 如:functionName() ),就可以執行花括弧中的語句,這樣就可以實現你的想法。換一種說法,函數就像是哈利傳輸速率的通關密語,哈利傳輸速率只需要念一句正確的通關密語,就可以開啟密室的大門,密語就像是函數,哈利傳輸速率在念它的時候就像是在調用這個函數,這個函數的作用同時也是哈利傳輸速率的目的就是開啟密室的大門。
1、定義函數的文法:
function functionName (arguments){ statements;}
其中function是關鍵字,functionsName是函數名,命名方式建議遵循“駝峰式”,圓括弧中的arguments是參數,注意它是複數,參數可能不只一個,花括弧中的statements是執行語句,注意它也是複數,執行語句可能不只有一句。例如,下面這個函數可以用來計算兩個數的和。
function numTotal (num1,num2){ var total = num1 + num2; document.write(total);}numTotal(5,15); // 20 2、函數中的參數
JavaScript中函數的參數相對其他程式設計語言較為不同,若在函數中有一個參數,可以傳遞一個、三個甚至不傳遞參數值;你也可以不先設定參數,卻可以進行隱式傳遞。即使如此,但我不認為這是你可以不正確使用參數的理由。
還有一點需要注意的是,為了最佳化函數甚至整個程式碼,我們應當盡量減少函數中的參數個數,時間久了,你會發現,這是一個好的思維方式。
3、變數的範圍
通過var關鍵字定義的變數是局部變數,反之,沒有用var關鍵字而直接定義的變數為全域變數。全域變數將影響全域的結果,所以在使用全域變數的時候一定要謹慎。
1 function myFunction(a,b){2 total = a * b;3 return total;4 }5 var total = 500;6 var num = myFunction(10,10);7 document.write(total); // 100
第二行中變數total雖然是在函數體內定義的,但是它是全域變數,第五行中的total是局部變數,由於位置的特殊,第五行的值剛賦給局部變數total,第六行就立刻傳參給函數myFunctions(),從而擷取了影響全域total的值。如果第二行的變數total改成局部變數,則最終結果為500,因為函數體返回的total的值本身不會跳出函數體,第六行是將total的值賦值給變數num而不是total。
二、對象1、遍曆對象的屬性值
對象是一種特殊的資料類型,包含在對象中的資料,可以通過對象的屬性和方法來訪問。
var person = new Object();person.name = ‘筱雨生‘;person.age = 15;person.height = 175;person.skinColor = ‘yellow‘;for ( var i in person){ document.write(person[i] + ‘<br/>‘);}//通過for-in語句遍曆person對象的屬性值//i包含了person所有的屬性,person[0]就是person.namefunction who(){for ( var i in person){ document.write(person[i] + ‘<br/>‘); }}who();//通過函數who()來實現遍曆person對象的屬性值2、內建對象
所謂的內建對象是指JavaScript內部建立好的對象,針對這些對象,JavaScript也建立好了相應的方法和屬性,在你有需求的時候,可以直接調用。
var num = new Array();document.write(num.length); //0document.write(‘<br/>‘); //換行var newNum = 3.1415926;document.write(Math.round(newNum)); // 3
上面這段代碼中,Array、document、Math都屬於內建對象,除此之外,還有許多內建對象供我們使用。
JavaScript學習筆記——文法基礎1.4