作用域
函數(shù)外邊的變量叫做全局變量,可以在函數(shù)外面和函數(shù)里面使用。
varnum=1;
functiontest(){
? ? num++;
? ? console.log(num);
}
test();// 2
console.log(num);// 2
函數(shù)內(nèi)部的變量叫做局部變量父虑,只能在函數(shù)內(nèi)部使用白修。
functiontest(){
? ? varnum1=10;
? ? num1++;
? ? console.log(num1);
}
test();// 11
console.log(num1);// 報錯,num1未定義
有一種情況比較特殊伤疙,函數(shù)內(nèi)部聲名的變量也是全局變量悼吱。
functiontest(){
? ? num1=10;
? ? num1++;
? ? console.log(num1);
}
test();// 11
console.log(num1);// 11
總結(jié):
函數(shù)外邊使用的變量是全局變量慎框,要在全局內(nèi)找,可以是函數(shù)外部聲名的變量也可以是函數(shù)內(nèi)部的隱式聲名的變量后添。
函數(shù)內(nèi)部使用的變量是局部變量笨枯,先從局部找,如果局部沒有,再從全局中找馅精。
遞歸函數(shù)
遞歸函數(shù)就是在函數(shù)中調(diào)用自己严嗜。
// 求10的階和,即:10+9+8+...+1
functionfacSum(num){
? ? if(num==1){
? ? ? ? return1;
? ? }
? ? returnnum+facSum(num-1);
}
varres=facSum(10);
console.log(res);// 55
事件
概念
事件就是用戶在網(wǎng)頁上的動作洲敢,例如:鼠標(biāo)點(diǎn)擊漫玄、鼠標(biāo)移動、鍵盤按下压彭。睦优。。
事件三要素 :? 事件源? + 事件名稱 +? 事件處理程序
事件源 : 誰觸發(fā)這個事件 (按鈕? btn)
事件名稱 : 觸發(fā)了什么事件 (點(diǎn)擊click事件)
事件處理程序 : 事件觸發(fā)后要執(zhí)行的代碼(函數(shù)形式)
初體驗(yàn):
<inputtype="button"value="按鈕"onclick="dian"id="btn">
<scripttype="text/javascript">
? ? functiondian(){
? ? ? ? alert("點(diǎn)擊了按鈕壮不!");
? ? }
</script>
注意:事件處理程序(函數(shù))并不是立馬執(zhí)行汗盘,而是當(dāng)事件觸發(fā)的時候在會執(zhí)行(瀏覽器會自動調(diào)用)
事件列表
事件備注
onclick當(dāng)鼠標(biāo)左鍵單擊
ondblclick當(dāng)鼠標(biāo)左鍵雙擊
onmouseover當(dāng)光標(biāo)在指定的內(nèi)容上面
onmouseout當(dāng)光標(biāo)離開指定的內(nèi)容
onkeydown當(dāng)鍵盤按下的那一刻
onkeyup當(dāng)鍵盤抬起的那一刻
onfocus當(dāng)輸入框得到焦點(diǎn)
onblur當(dāng)輸入框失去焦點(diǎn)
onchange當(dāng)指定的標(biāo)簽里面內(nèi)容有變化的時候
onsubmit提交事件
onload當(dāng)整個網(wǎng)頁加載完成后
通常使用事件來驅(qū)動函數(shù):
對象.事件=function(){}
對象.事件=函數(shù)名;// 調(diào)用自定義函數(shù),不能加小括號询一,否則會提前執(zhí)行
<標(biāo)簽名 事件名="函數(shù)調(diào)用">
鍵盤事件可以區(qū)分按下的是哪個鍵隐孽,每個鍵都由按鍵碼
window.onkeydown=function(e){
? ? varkeyNum=e.keyCode
? ? if(keyNum=="13"){
? ? ? ? alert("回車鍵");
? ? }elseif(keyNum=="8"){
? ? ? ? alert("BackSpace鍵");
? ? }
}