JavaScript之Arguments物件暫存函式引數與屬性

zenghy發表於2018-01-23

一、Arguments物件

在JavaScript中,當一個函式被呼叫時,JS會為這個函式建立一個Arguments物件,區域性變數arguments自動初始化以便引用這個物件。 JS Arguments物件最主要的功能是:提供一種方法,用來確定傳遞給函式的引數個數並且引用未命名的引數。

Arguments物件裡面存放的函式的所有的引數,Arguments物件被定義為陣列的格式,通過Arguments我們能夠判斷函式引數的個數。可用Arguments[i]引用函式的引數,Arguments[0]是函式的第一個引數,Arguments.length引數的個數,但是Arguments不是陣列。


/JS Arguments物件屬性:
//(1)arguments.callee = 正在執行的函式的引用
//(2)arguments.length = 引數個數
//應用例項:

 var fac = function(x){
  //
  //arguments.length = 函式呼叫時,引數個數。(實參)
  //arguments.callee.length = 函式定義時,引數個數。(形參)
  //
  if(arguments.length == arguments.callee.length){
   var x = parseInt(arguments[0]);
   if(x < 2){
    return 1;
   }else{
    return x * arguments.callee(x-1);
   }
  }else{
   return 0;
  }
 }

 document.writeln("fac(1) = " + fac(1));// fac(1) = 1
 document.writeln("fac(2) = " + fac(2));// fac(2) = 2
 document.writeln("fac(3) = " + fac("3"));// fac(3) = 6
 document.writeln("fac(10,11) = " + fac(10,11));// fac(10,11) = 0
 document.writeln("fac(20) = " + fac("20"));// fac(20) = 2432902008176640000
 

複製程式碼

二、Arguments物件的作用

通過Arguments我們可以實現一些高階的函式,例如柯里化函式,同時,我們可以實現函式傳遞多個引數。

希望各位技術同僚看到此文無論好壞留下自己的意見。如果覺得該文與你有共鳴,歡迎給出屬於我的第一個喜歡,順便po出+我的部落格,也希望大家能給出一顆star,簡直不要太可憐~~~

相關文章