day05
一·函數(shù)的嵌套調(diào)用
主調(diào)函數(shù):調(diào)用別的函數(shù)的函數(shù)
被調(diào)函數(shù):被別的函數(shù)調(diào)用的函數(shù)
function fun1(){
console.log("fun1");
}
function fun2(){
fun1();
console.log("fun2");
}
function fun3(){
fun2();
console.log("fun3");
}
fun3();
其中從f1到f3被稱(chēng)為壓棧。又叫保護(hù)現(xiàn)場(chǎng):入口地址+形參變量+局部變量
從f3到f1的被稱(chēng)為彈棧,又叫恢復(fù)現(xiàn)場(chǎng)
斷點(diǎn)調(diào)試:
通過(guò)Call stack清楚的觀看壓棧和彈棧的過(guò)程
二:函數(shù)定義的另一種表現(xiàn)形式
匿名函數(shù):
var fun = function(a,b){
console.log(a+b);
}
三:事件和函數(shù)的關(guān)系
事件:事件的本質(zhì)就是函數(shù)調(diào)用; 比方:鼠標(biāo)的滑動(dòng),按壓等就是一個(gè)事件。
函數(shù):函數(shù)就是對(duì)事件作出具體反饋映射。
3·1:事件和函數(shù)綁定的兩種方式
3·1·1方式一:在HTML元素中就進(jìn)行綁定
【注意事項(xiàng)】: 這種綁定方式,綁定的不是函數(shù)的返回值,而是函數(shù)對(duì)象本身
<button onclick="fun()">點(diǎn)擊</button>
//"fun()" == fun
var fun = function(){
console.log("heihei");
}
3·1·2:方式二:通過(guò)js獲取HTML元素進(jìn)行綁定
document.getElementById(ID名稱(chēng)):返回HTML元素中ID所對(duì)應(yīng)的元素
<button type="button" id="btn">點(diǎn)擊</button>
var oBtn = document.getElementById("btn");
oBtn.ondblclick = function(){
console.log("呵呵");
}
四:各種文本內(nèi)容的讀寫(xiě):
4·1:表單內(nèi)容通過(guò)value進(jìn)行讀寫(xiě)
寫(xiě):
var oTxt1 = document.getElementById("txt1");
oTxt1.value = 999;
讀:
console.log(oTxt1.value);
4·2:基本元素通過(guò)innerHTML進(jìn)行讀寫(xiě)
寫(xiě):
var oP = document.getElementById("_p");
oP.innerHTML = "嘿嘿";
讀:
console.log(oP.innerHTML);
五:變量的聲明提升
JS會(huì)默認(rèn)的對(duì)未被定義而使用的變量進(jìn)行聲明提升,
即就是var a=undefined;(盡可能不要未定義就開(kāi)始使用)
六:變量的作用域
作用域:不同變量的定義方式,決定了該變量可以在那些范圍下可以被使用
6·1:全局變量
概念:沒(méi)有被任何括號(hào)括起來(lái)的變量,它的作用域是該文件 它類(lèi)似于共享單車(chē),誰(shuí)都能用,并且數(shù)值是共享的。
缺陷:1:降低函數(shù)的獨(dú)立性 2:會(huì)額外的占用內(nèi)存
6·2:局部變量
概念:被任意括號(hào)括起來(lái)的變量,局部變量,作用域是該函數(shù)體內(nèi),函數(shù)體外部不 能使用。(因?yàn)樵摵瘮?shù)執(zhí)行完就銷(xiāo)毀了)
6·3:作用域鏈:
內(nèi)部函數(shù)可以使用外部函數(shù)的變量,反之不行
function father(a){
var b = 2;
var son = function(c){
var d = 4;
console.log(a,b,c,d);
}
// son(3);
console.log(d);
}
father(1);//X
七:遞歸:
一個(gè)函數(shù)直接或者間接的嵌套自己本身
function age(n){
var c;
if(n==1){
c = 10;
}else{
c = age(n-1)+2;
}
return c;
}
console.log(age(5));
一個(gè)函數(shù)直接或者間接的嵌套自己本身
function age(n){
var c;
if(n==1){
c = 10;
}else{
c = age(n-1)+2;
}
return c;
}
console.log(age(5));
|