十年專注于品牌網站建設 十余年專注于網站建設_小程序開發_APP開發,低調、敢創新、有情懷!
      南昌百恒網絡微信公眾號 掃一掃關注
      小程序
      tel-icon全國服務熱線:400-680-9298,0791-88117053
      掃一掃關注百恒網絡微信公眾號
      掃一掃打開百恒網絡微信小程序

      百恒網絡

      南昌百恒網絡

      結合實例初步介紹ECMAScript函數中的參數概念及意義

      百恒網絡 2012-02-29 5736

      理解參數

      ECMAScript函數的參數與大多數其他語言中函數的參數有所不同。ECMAScript函數不介意傳遞進來多少個參數,也不在乎傳進來參數是什么數據類型。也就是說,即便你定義的函數只接收兩個參數,在調用這個函數時也未必一定要傳遞兩個參數。可以傳遞一個、三個甚至不傳遞參數,而觶析器永遠不會有什么怨言。之所以會這樣,原因是ECMAScript中的參數在內部是用一個數組來表示的。函數接收到的始終都是這個數組,而不關心數組中包含哪些參數(如果有參數的話)。如果這個數組中不包含任何元素,無所謂;如果包含多個元素,也沒有問題。實際上,在函數體內可以通過arguments對象來訪問這個參數數組,從而獲取傳遞給函數的每一個參數。

      其實,arguments對象只是與數組類似(它并不是Array的實例),因為可以使用方括號語法訪問它的每一個元素(即第一個元素是arguments[o],第二個元素是argumetns [1],以此類推),使用length屬性來確定傳遞進來多少個參數。在前面的例子中,sayHi()函數的第一個參數的名字叫name,而該參數的值也可以通過訪問arguments[o]來獲取。因此,南昌網站建設公司工程師提示,那個函數也可以像下面這樣重寫,即不顯式地使用命名參數:

      function sayHi() {

      alert( "Hello"+arguments[0]+","+arguments[1]);}

      sayHi( "Nicholas”,"how are you today?");

      這個重寫后的函數中不包含命名的參數。雖然沒有使用name和message標識符,但函數的功能依舊。這個事實說明了ECMAScript函數的一個重要特點:命名的參數只提供便利,但不是必需的。另外,在命名參數方面,其他語言可能需要事先創建一個函數簽名,而將來的調用必須與該簽名一致。但在ECMAScript中,沒有這些條條框框,解析器不會驗證命名參數。

      通過訪問arguments對象的length屬性可以獲知有多少個參數傳遞給了函數。下面這個函數會在每次被調用時,輸出傳入其中的參數個數:

      function howManyArgs() {

      alert (arguments.length);

      }

      howManyArgs(”string”,45); //2

      howManyArgs(); //0

      howManyArgs {12); //1

      執行以上代碼會依次出現3個警告框,分別顯示2、0和l。由此可見,南昌建網站公司工程師提示,開發人員可以利用這一點讓函數能夠接收任意個參數并分別實現適當的功能。請看下面的例子:

      function doAdd() {

      if (arguments.length==1) {

      alert (arguments[0]+10);

      ) else if(arguments.length==2) {

      alert( arguments[O] +arguments [1]);

      }

      }

      doAdd (10); //20

      doAdd(30,20); //50

      函數doAdd()會在只有一個參數的情況下給該參數加上10;如果是兩個參數,則將那個參數簡單相加并返回結果。因此,南昌網站制作公司工程師提示,doAdd(10)會返回20,而doAdd(30,20)則返回50。雖然這個特性算不上完美的重載,但也足夠彌補ECMAScript的這一缺憾了。

      另一個與參數相關的重要方面,就是arguments對象可以與命名參數一起使用,如下面的例子所示:

      function doAdd(numl, num2){

      if(arguments.length ==1){

      alert(numl+10);

      }else if (arguments.length == 2)

      alert(arguments[o]+num2);

      }}

      doAdd (10); //20

      doAdd(30,20); //50

      在此,南昌做網站公司工程師經驗總結,在重寫后的這個doAdd()函數中,兩個命名參數都與arguments對象一起使用。由于numl的值與arguments[o]的值相同,因此它們可以互換使用(當然,num2和arguments [1J也是如此)。 關于參數還要記住最后一點:沒有傳遞值的命名參數將自動被賦予undefined值。這就跟定義了變量但又沒有初始化一樣。例如,如果只給doAdd()函數傳遞了一個參數,則num2中就會保存 undefined值。

      ECMAScript中的所有參數傳遞的都是值,不可能通過引用傳遞參數。

      希望本文對廣大站長或從事企業網站建設公司的團隊有所幫助,如對此不太理解的,可以與南昌網絡公司百恒網絡技術部聯系。我們很高興與廣大站長和從事企業網站建設公司技術人員分享我們的技術和經驗。


      400-680-9298,0791-88117053
      掃一掃關注百恒網絡微信公眾號
      掃一掃打開百恒網絡小程序

      歡迎您的光顧,我們將竭誠為您服務×

      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售后服務 售后服務
       
      售后服務 售后服務
       
      備案專線 備案專線
       
      ×
      人妻少妇精品专区性色AV| 亚洲精品国产手机| 99久久99这里只有免费的精品| 国产精品jizz在线观看免费| 中文字幕一区二区精品区| 无码囯产精品一区二区免费 | 四虎国产精品成人| 日韩在线观看网站| 成人精品国产亚洲欧洲| 国产精品成人久久久久久久| 国产精品密蕾丝视频| 国产精品视频第一页| 国产精品青草久久久久福利99 | 国产成人精品2021| 久久久国产精品网站| 久久精品免费观看| 国内精品伊人久久久久| 国产综合精品女在线观看| 亚洲精品无码久久久久去q| 国产国拍精品亚洲AV片| 自拍偷自拍亚洲精品第1页| 久久er国产精品免费观看8| 国产亚洲福利精品一区二区| 日韩精品国产一区| 国产精品免费_区二区三区观看| 国产精品色午夜视频免费看| 国产精品福利久久| 国产在视频线精品视频| 中日韩一区二区三区| 日韩精品成人一区二区三区| 亚洲日韩欧洲乱码AV夜夜摸| 久久精品无码一区二区日韩AV | 日韩一本之道一区中文字幕| 国产日韩精品一区二区在线观看播放| 国产精品正在播放| 国产女人乱人伦精品一区二区| 国产乱子伦精品免费无码专区| www.日韩在线| 日韩成人免费在线| 国产69精品久久久久99| 久久99精品久久久久久野外|