天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

javascript arguments 傳遞給函數(shù)的隱含參數(shù)

本人第一次看到這個東東的時候,以為就是“變相”的普通參數(shù),只不過不用在定義函數(shù)的時候明確聲明而已。
不過,代碼是廉價的(Code is cheap.)看代碼:
function funcTest(a, b) {
alert(a);
alert(b);
for ( var i = 0 ; i < arguments.length; i ++ ) {
alert(arguments[i]);
}
}
function test() {
funcTest( 1 , 2 , 3 ); // 放到html頁進行執(zhí)行
}
function funcTest(a, b) {
alert(a);
alert(b);
for ( var i = 0 ; i < arguments.length; i ++ ) {
alert(arguments[i]);
}
}
function test() {
funcTest( 1 , 2 , 3 ); // 放到html頁進行執(zhí)行
}
代碼運行后怎么樣,不錯,這里的length實在是很奇怪,對不對?我們來看書中是怎么說的,“代碼運行時會依次顯示:1,2,1,2,3。因此,在定義函數(shù)的時候,即使不指定參數(shù)列表,仍然可以通過arguments引用到所獲得的參數(shù),這給編程帶來了很大的靈活性”。沒有比這句更加精辟的闡釋了。
看到這里,我們可能都有一個疑問(如果你稍微具備一點js編程知識的話),arguments參數(shù)是不是js數(shù)組對象的一個實例?下面的代碼會幫你解決這個疑點:
Array.prototype.testArg = " test arguments " ;
function funcArg() {
alert(arguments.testArg);
}
function test() {
alert( new Array().testArg);
funcArg();
}
Array.prototype.testArg = " test arguments " ;
function funcArg() {
alert(arguments.testArg);
}
function test() {
alert( new Array().testArg);
funcArg();
}
代碼運行結(jié)果是先彈出"test arguments"和"undefined",為什么funcArg調(diào)用返回“undefined”?看到這里相信你對上面的疑問已經(jīng)消除。
到這里你以為你掌握了arguments的全部?那就太小瞧js的天才設計者(們)了,下面看另外一個有才的設計:
Q:使用遞歸來計算1 到n 的自然數(shù)之和
A1:
function sum(n) {
if ( 1 == n) return 1 ;
else return n + sum(n - 1 );
}
function test() {
alert(sum( 100 )); ; // 放到html頁進行執(zhí)行
} function sum(n) {
if ( 1 == n) return 1 ;
else return n + sum(n - 1 );
}
function test() {
alert(sum( 100 )); ; // 放到html頁進行執(zhí)行
}
A2:
function sum(n) {
if ( 1 == n) return 1 ;
else return n + arguments.callee(n - 1 );
}
function test() {
alert(sum( 100 )); ; // 放到html頁進行執(zhí)行
} function sum(n) {
if ( 1 == n) return 1 ;
else return n + arguments.callee(n - 1 );
}
function test() {
alert(sum( 100 )); ; // 放到html頁進行執(zhí)行
}
A1和A2這兩個回答都解決了問題,相信第一種方法是大多數(shù)人的常規(guī)做法,但是js推薦使用第二種,原書說A1這種方式“其中函數(shù)內(nèi)部包含了對 sum 自身的調(diào)用,然而對于JavaScript 來說,函數(shù)名僅僅是一個變量名,在函數(shù)內(nèi)部調(diào)用sum 即相當于調(diào)用一個全局變量,不能很好的體現(xiàn)出是調(diào)用自身”,sum都調(diào)用sum了,還說“不能很好的體現(xiàn)出是調(diào)用自身”,為什么呢?
書到用時方恨少,查書,書上是這么寫的:“arguments 對象的另一個屬性是callee,它表示對函數(shù)對象本身的引用,這有利于實現(xiàn)無名函數(shù)的遞歸或者保證函數(shù)的封裝性,”這話我承認說的有理,我從來都對書本尤其是技術類的書本保持高度的信任,可是這里說“arguments 對象的另一個屬性是callee”,這里“arguments ”怎么成“對象”了?標題都說“傳遞給函數(shù)的隱含參數(shù):arguments ”,難道抄書抄錯了?查看電子書,靠,復制粘貼還會有錯?
對象,對象?對象何其多,下篇找"對象"。

JavaScript技術javascript arguments 傳遞給函數(shù)的隱含參數(shù),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 热久久免费频精品99热 | 91久久精一区二区三区大全 | 殴美黄色网 | 精品熟女少妇AV久久免费A片 | 午夜精品久久久久久久99蜜桃 | 抽插内射高潮呻吟爆乳 | 免费人成在线观看视频不卡 | 欧式午夜理伦三级在线观看 | 超碰在线线公开免费视频 | 超碰久久国产vs | 4k岛国精品午夜高清在线观看 | 桥本有菜黑丝 | 夜色私人影院永久入口 | 99精产国品一二产区在线 | 窝窝午夜色视频国产精品东北 | 中国女人内谢69XXXXXA片 | seyeye在清在线 | 亚洲一区乱码电影在线 | 久草免费视频在线观看 | 嫩草欧美曰韩国产大片 | 大陆午夜伦理 | 一边吃奶一边啪啪真舒服 | 456亚洲人成在线播放网站 | 同时被两个男人轮流舔 | 制服国产欧美亚洲日韩 | 老头狠狠挺进小莹体内视频 | 男人把女人桶到高潮嗷嗷叫 | 国产精品青草久久福利不卡 | 中国特级黄色大片 | 亚洲裸舞 hd | 果冻传媒在线观看网站 | 无码人妻精品一区二区蜜桃在线看 | 中文字幕在线久热精品 | 秋葵app秋葵官网18在线观看 | 亚洲爆乳少妇精品无码专区 | 999精品国产人妻无码系列 | 欧美日韩亚洲一区视频二区 | 日本亚洲电影 | 经典三级四虎在线观看 | 日韩精品一卡二卡三卡四卡2021 | 美女张开腿露出尿口扒开来摸动漫 |