arguments 屬性:指向一個類似數(shù)組 但不是數(shù)組的對象,存儲的是實際傳遞給函數(shù)的參數(shù),而不局限于函數(shù)聲明所定義的參數(shù)列表
示例代碼:
function show(a,b)//定義show函數(shù) { if(arguments.length==2)//如果實際輸入兩個值 alert(a+b); else if(arguments.length==3)//如果實際輸入3個值 alert(arguments[0]+" "+arguments[1]+" "+arguments[2]); //彈框輸出 輸入的三個值 } show("hello","world","haha"); alert("show函數(shù)的長度:"+show.length); //show函數(shù)的長度效果圖:
length屬性:函數(shù)定義時所指定參數(shù)的個數(shù)
arguments中的callee屬性:它表示對函數(shù)對象本身的引用
示例代碼: 使用遞歸實現(xiàn)求階乘
function jie(n) { if(n==1) return 1; else return n*arguments.callee(n-1); } alert(jie(3));效果圖:
callee的優(yōu)點:
當修改函數(shù)名的時候不用再去修改函數(shù)內(nèi)部的函數(shù)名,arguments.callee就表示函數(shù)對象本身。
定義在函數(shù)外部的是全局變量,任何函數(shù)都可以使用; 定義在函數(shù)內(nèi)部的是局部變量,只有當前函數(shù)可以使用;
示例代碼:
var a=1; function bl() { var b=2; }上述代碼中a是全局變量,b是局部變量。
特殊情況: 當局部變量和全局變量名相同,函數(shù)會如何執(zhí)行?
var a=1; function bl() { var b=2; var a=3; alert(a); } bl();結(jié)果:
結(jié)果是 :函數(shù)會調(diào)用內(nèi)部的局部變量
微信:
支付寶:
新聞熱點
疑難解答