最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

javascript中callee與caller的用法和應(yīng)用場景_javascript技巧

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 20:56:19
文檔

javascript中callee與caller的用法和應(yīng)用場景_javascript技巧

javascript中callee與caller的用法和應(yīng)用場景_javascript技巧:caller : functionName.caller 返回調(diào)用者。 看看下面的函數(shù),大家可以復(fù)制到VS中執(zhí)行下 代碼如下: function caller() { if (caller.caller) { alert(caller.caller.toString()); } else { alert(函數(shù)直接執(zhí)行);
推薦度:
導(dǎo)讀javascript中callee與caller的用法和應(yīng)用場景_javascript技巧:caller : functionName.caller 返回調(diào)用者。 看看下面的函數(shù),大家可以復(fù)制到VS中執(zhí)行下 代碼如下: function caller() { if (caller.caller) { alert(caller.caller.toString()); } else { alert(函數(shù)直接執(zhí)行);

caller :
functionName.caller 返回調(diào)用者。

看看下面的函數(shù),大家可以復(fù)制到VS中執(zhí)行下
代碼如下:
function caller() {
if (caller.caller) {
alert(caller.caller.toString());
} else {
alert("函數(shù)直接執(zhí)行");
}
}
function handleCaller() {
caller();
}
handleCaller();
caller();

大家會(huì)發(fā)現(xiàn)第一個(gè)alert會(huì)彈出調(diào)用caller函數(shù)的調(diào)用者h(yuǎn)andleCaller,而第二個(gè)alert由于沒有在其他函數(shù)體內(nèi)調(diào)用,所以caller為null,就執(zhí)行了 alert("函數(shù)直接執(zhí)行");


callee:


返回正被執(zhí)行的 Function 對(duì)象,也就是所指定的 Function 對(duì)象的正文.
callee是arguments 的一個(gè)屬性成員,它表示對(duì)函數(shù)對(duì)象本身的引用,這有利于匿名

函數(shù)的遞歸或者保證函數(shù)的封裝性。 下面一段代碼先說明callee的用法,實(shí)例代碼摘自網(wǎng)上
代碼如下:
function calleeLengthDemo(arg1, arg2) {
alert(arguments.callee.toString());
if (arguments.length == arguments.callee.length) {
window.alert("驗(yàn)證形參和實(shí)參長度正確!");
return;
} else {
alert("實(shí)參長度:" + arguments.length);
alert("形參長度: " + arguments.callee.length);
}
}
calleeLengthDemo(1);

第一個(gè)消息框彈出calleeLengthDemo函數(shù)本身,這說明callee就是函數(shù)本身對(duì)象的引用。callee還有個(gè)非常有用的應(yīng)用就是用來判斷實(shí)際參數(shù)跟行參是否一致。上面的代碼第一個(gè)消息框會(huì)彈出實(shí)際參數(shù)的長度為1,形式參數(shù)也就是函數(shù)本身的參數(shù)長度為2.

應(yīng)用場景:
callee的應(yīng)用場景一般用于匿名函數(shù)
大家看下下面一段代碼 摘自網(wǎng)絡(luò)
代碼如下:
var fn=function(n){
if(n>0) return n+fn(n-1);
return 0;
}
alert(fn(10))

函數(shù)內(nèi)部包含了對(duì)自身的引用,函數(shù)名僅僅是一個(gè)變量名,在函數(shù)內(nèi)部調(diào)用即相當(dāng)于調(diào)用
一個(gè)全局變量,不能很好的體現(xiàn)出是調(diào)用自身,這時(shí)使用callee會(huì)是一個(gè)比較好的方法
代碼如下:
var fn=(function(n){
if(n>0) return n+arguments.callee(n-1);
return 0;
})(10);
alert(fn)

這樣就讓代碼更加簡練。又防止了全局變量的污染。

caller的應(yīng)用場景 主要用于察看函數(shù)本身被哪個(gè)函數(shù)調(diào)用。

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

javascript中callee與caller的用法和應(yīng)用場景_javascript技巧

javascript中callee與caller的用法和應(yīng)用場景_javascript技巧:caller : functionName.caller 返回調(diào)用者。 看看下面的函數(shù),大家可以復(fù)制到VS中執(zhí)行下 代碼如下: function caller() { if (caller.caller) { alert(caller.caller.toString()); } else { alert(函數(shù)直接執(zhí)行);
推薦度:
標(biāo)簽: 的作用 java javascript
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top