整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          修改request請求參數(shù)

          修改request請求參數(shù)

          質(zhì)上來講,request請求當(dāng)中的參數(shù)是無法更改的,也不能添加或者刪除;

          但在后臺程序中,一般對request的參數(shù)的操作,都是通過request的getParameter、getParameterNames、getParameterValues等方法執(zhí)行的;所以我們要是能重寫這些方法,就從側(cè)面改變了request的請求參數(shù)。恰好,servlet就提供了一個(gè)HttpServletRequestWrapper類來供大家去繼承(該類是HttpServletRequest的封裝類,public class HttpServletRequestWrapper extends ServletRequestWrapper implements

          HttpServletRequest{}),重寫request相關(guān)方法。

          如果想學(xué)習(xí)Java工程化、高性能及分布式、深入淺出。微服務(wù)、Spring,MyBatis,Netty源碼分析的朋友可以加我的Java高級交流:854630135,群里有阿里大牛直播講解技術(shù),以及Java大型互聯(lián)網(wǎng)技術(shù)的視頻免費(fèi)分享給大家。

          JavaScript 函數(shù)對參數(shù)的值沒有進(jìn)行任何的檢查。

          函數(shù)顯式參數(shù)(Parameters)與隱式參數(shù)(Arguments)

          在先前的教程中,我們已經(jīng)學(xué)習(xí)了函數(shù)的顯式參數(shù):

          functionName(parameter1, parameter2, parameter3) {

          // 要執(zhí)行的代碼……

          }

          函數(shù)顯式參數(shù)在函數(shù)定義時(shí)列出。

          函數(shù)隱式參數(shù)在函數(shù)調(diào)用時(shí)傳遞給函數(shù)真正的值。

          參數(shù)規(guī)則

          JavaScript 函數(shù)定義時(shí)顯示參數(shù)沒有指定數(shù)據(jù)類型。

          JavaScript 函數(shù)對隱式參數(shù)沒有進(jìn)行類型檢測。

          JavaScript 函數(shù)對隱式參數(shù)的個(gè)數(shù)沒有進(jìn)行檢測。

          默認(rèn)參數(shù)

          如果函數(shù)在調(diào)用時(shí)未提供隱式參數(shù),參數(shù)會默認(rèn)設(shè)置為: undefined

          有時(shí)這是可以接受的,但是建議最好為參數(shù)設(shè)置一個(gè)默認(rèn)值:

          實(shí)例

          function myFunction(x, y) {

          if (y===undefined) {

          y=0;

          }

          }

          或者,更簡單的方式:

          實(shí)例

          function myFunction(x, y) {

          y=y || 0;

          }

          如果y已經(jīng)定義 , y || 返回 y, 因?yàn)?y 是 true, 否則返回 0, 因?yàn)?undefined 為 false。

          如果函數(shù)調(diào)用時(shí)設(shè)置了過多的參數(shù),參數(shù)將無法被引用,因?yàn)闊o法找到對應(yīng)的參數(shù)名。 只能使用 arguments 對象來調(diào)用。

          Arguments 對象

          JavaScript 函數(shù)有個(gè)內(nèi)置的對象 arguments 對象。

          argument 對象包含了函數(shù)調(diào)用的參數(shù)數(shù)組。

          通過這種方式你可以很方便的找到最后一個(gè)參數(shù)的值:

          實(shí)例

          x=findMax(1, 123, 500, 115, 44, 88);

          function findMax() {

          var i, max=0;

          for (i=0; i < arguments.length; i++) {

          if (arguments[i] > max) {

          max=arguments[i];

          }

          }

          return max;

          }

          或者創(chuàng)建一個(gè)函數(shù)用來統(tǒng)計(jì)所有數(shù)值的和:

          實(shí)例

          x=sumAll(1, 123, 500, 115, 44, 88);

          function sumAll() {

          var i, sum=0;

          for (i=0; i < arguments.length; i++) {

          sum +=arguments[i];

          }

          return sum;

          }

          通過值傳遞參數(shù)

          在函數(shù)中調(diào)用的參數(shù)是函數(shù)的隱式參數(shù)。

          JavaScript 隱式參數(shù)通過值來傳遞:函數(shù)僅僅只是獲取值。

          如果函數(shù)修改參數(shù)的值,不會修改顯式參數(shù)的初始值(在函數(shù)外定義)。

          隱式參數(shù)的改變在函數(shù)外是不可見的。

          通過對象傳遞參數(shù)

          在JavaScript中,可以引用對象的值。

          因此我們在函數(shù)內(nèi)部修改對象的屬性就會修改其初始的值。

          修改對象屬性可作用于函數(shù)外部(全局變量)。

          修改對象屬性在函數(shù)外是可見的。

          如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!

          本類型傳遞?式

          由于js中存在復(fù)雜類型和基本類型,對于基本類型??,是按值傳遞的。

          var a=1;
          function test(x) {
          x=10;
          console.log(x);
          }
          test(a); // 10
          console.log(a); // 1

          雖然在函數(shù) test 中 a 被修改,并沒有有影響到 外部 a 的值,基本類型是按值傳遞的

          復(fù)雜類型按引?傳遞

          我們將外部 a 作為?個(gè)對象傳? test 函數(shù)

          var a={
          a: 1,
          b: 2
          };
          function test(x) {
          x.a=10;
          console.log(x);
          }
          test(a); // { a: 10, b: 2 }
          console.log(a); // { a: 10, b: 2 }

          可以看到,在函數(shù)體內(nèi)被修改的 a 對象也同時(shí)影響到了外部的 a 對象,可?復(fù)雜類型是按引?傳遞的.

          可是如果再做?個(gè)實(shí)驗(yàn):

          var a={
          a: 1,
          b: 2
          };
          function test(x) {
          x=10;
          console.log(x);
          }
          test(a); // 10
          console.log(a); // { a: 1, b: 2 }

          外部的 a 并沒有被修改,如果是按引?傳遞的話,由于共享同?個(gè)堆內(nèi)存, a 在外部也會表現(xiàn)為 10 才對. 此時(shí)的復(fù)雜類型同時(shí)表現(xiàn)出了按值傳遞和按引?傳遞的特性。

          按共享傳遞

          復(fù)雜類型之所以會產(chǎn)?這種特性,原因就是在傳遞過程中,對象 a 先產(chǎn)?了?個(gè) 副本a ,這個(gè) 副本a 并不是深克隆得到的 副本a , 副本a 地址同樣指向?qū)ο?a 指向的堆內(nèi)存。因此在函數(shù)體中修改 x=10 只是修改了 副本a , a 對象沒有變化. 但是如果修改了 x.a=10 是修改了兩者指向的同?堆內(nèi)存,此時(shí)對象 a 也會受到影響。

          有?講這種特性叫做傳遞引?,也有?種說法叫做按共享傳遞。


          主站蜘蛛池模板: 亚洲中文字幕丝袜制服一区| 亚洲视频一区二区| 一区二区三区在线观看视频 | 国产精品一区二区三区高清在线 | 黑人一区二区三区中文字幕| 中文日韩字幕一区在线观看| 无码人妻一区二区三区在线| 亚洲乱码av中文一区二区| 欧洲精品一区二区三区在线观看 | 亚洲综合av一区二区三区不卡| 色天使亚洲综合一区二区| 久久精品一区二区影院| 91久久精品一区二区| 麻豆视频一区二区三区| 亚洲成AV人片一区二区| 国产精品无码一区二区三区在 | 久久99国产精一区二区三区| 亚洲av无码一区二区三区在线播放| 国产乱码精品一区二区三区四川| 国99精品无码一区二区三区 | 中文字幕在线不卡一区二区 | 亚洲福利视频一区二区三区| 日本强伦姧人妻一区二区| 无码人妻一区二区三区免费看| 波多野结衣精品一区二区三区 | 中文字幕乱码一区二区免费| 亚洲国产精品无码第一区二区三区| 日韩十八禁一区二区久久| 精品一区二区三区波多野结衣| 色一情一乱一伦一区二区三区| 无码一区二区三区| 一区二区三区波多野结衣| 精品欧洲av无码一区二区14| 中文字幕在线观看一区 | 在线观看一区二区精品视频| 日本精品高清一区二区| 国产成人AV区一区二区三| 亚洲国产成人久久综合一区| 成人免费区一区二区三区| 波多野结衣一区二区三区高清av| 亚洲美女视频一区|